Próbuję znaleźć zapytanie, które zwróci listę kluczy obcych dla tabeli oraz tabel i kolumn, do których się odnoszą. Jestem w połowie drogi z
SELECT a.table_name,
a.column_name,
a.constraint_name,
c.owner
FROM ALL_CONS_COLUMNS A, ALL_CONSTRAINTS C
where A.CONSTRAINT_NAME = C.CONSTRAINT_NAME
and a.table_name=:TableName
and C.CONSTRAINT_TYPE = 'R'
Ale nadal muszę wiedzieć, do której tabeli i klucza podstawowego odwołuje się ten klucz. Jak mam to zdobyć?
oracle
metadata
database-metadata
stymulanty
źródło
źródło
Odpowiedzi:
Przywoływany klucz podstawowy jest opisany w kolumnach
r_owner
ir_constraint_name
tabeliALL_CONSTRAINTS
. Dzięki temu uzyskasz potrzebne informacje:źródło
Spróbuj tego:
źródło
Oto uniwersalny skrypt, którego używamy, który był niesamowicie przydatny.
Zapisz go, abyś mógł go wykonać bezpośrednio (@ fkeys.sql). Umożliwi to wyszukiwanie według właściciela i tabeli nadrzędnej lub podrzędnej oraz pokazanie relacji kluczy obcych. Bieżący skrypt jawnie buforuje do C: \ SQLRPTS, więc będziesz musiał utworzyć ten folder, aby zmienić tę linię na coś, czego chcesz użyć.
źródło
Spowoduje to przeniesienie hierarchii kluczy obcych dla danej tabeli i kolumny oraz zwróci kolumny z podrzędnych i wnuka oraz wszystkie tabele podrzędne. Używa pod-zapytań, aby dodać r_table_name i r_column_name do user_constraints, a następnie używa ich do łączenia wierszy.
źródło
Oto inne rozwiązanie. Używanie domyślnych widoków sys jest tak powolne (około 10s w mojej sytuacji). Jest to znacznie szybsze niż to (ok. 0,5 s).
źródło
"_CURRENT_EDITION_OBJ"
jest nierozpoznany.SYS."_CURRENT_EDITION_OBJ"
sięSYS.OBJ$
. Będzie działać na 10g i 11g. I upewnij się, że masz wystarczające przywileje. Również zmieniłem odpowiedź za pomocąSYS.OBJ$
.Jeśli potrzebujesz wszystkich kluczy obcych użytkownika, użyj następującego skryptu
na podstawie kodu Vincenta Malgrata
źródło
Wiem, że jest trochę za późno, aby odpowiedzieć, ale i tak odpowiem, niektóre z powyższych odpowiedzi są dość skomplikowane, dlatego tutaj jest znacznie prostsze podejście.
źródło
W przypadku, gdy chcesz utworzyć ograniczenia FK z tabeli środowiska UAT do Live, odpal poniżej dynamicznego zapytania .....
źródło
Moja wersja, moim skromnym zdaniem, bardziej czytelna:
źródło
::
się:
itable
zetabl
Trochę za późno na odpowiedź, ale mam nadzieję, że moja odpowiedź była przydatna dla kogoś, kto musi wybrać złożone klucze obce.
źródło
Użyłem poniższego kodu i spełniło to moje zadanie-
źródło
źródło
user_constraints
, abyall_constraints
w razie potrzeby.źródło
źródło
Do załadowania tabeli użytkownika (lista kluczy obcych i tabel, do których się odwołują)
źródło