2012-08-09 20 views
77

Podałem nazwę dla każdego ograniczenia dla wielu tabel, które utworzyłem w Oracle SQL.Wyświetlanie nazw wszystkich wiązań dla tabeli w Oracle SQL

Problem polega na tym, że aby usunąć ograniczenie dla kolumny konkretnej tabeli, muszę znać nazwę, którą podałem dla każdego ograniczenia, o którym zapomniałem.

Jak wyświetlić listę wszystkich nazw ograniczeń, które podałem dla każdej kolumny tabeli?

Czy istnieje jakakolwiek instrukcja SQL?

Odpowiedz

108

Trzeba kwerendy data dictionary, zwłaszcza pogląd USER_CONS_COLUMNS zobaczyć kolumn tabeli i odpowiadające im ograniczenia:

SELECT * 
    FROM user_cons_columns 
WHERE table_name = '<your table name>'; 

FYI, chyba że specjalnie stworzony tabelę o nazwie małymi literami (używając podwójnych cudzysłowów), wtedy nazwa tabeli będzie domyślnie wielka, więc upewnij się, że tak jest w twoim zapytaniu.

Jeśli następnie chcemy zobaczyć więcej informacji na temat ograniczeń sama kwerendy USER_CONSTRAINTS widok:

SELECT * 
    FROM user_constraints 
WHERE table_name = '<your table name>' 
    AND constraint_name = '<your constraint name>'; 

Jeśli tabela jest utrzymywany w schemacie, który nie jest domyślny schemat to może trzeba wymienić poglądy z:

all_cons_columns 

i

all_constraints 

dodanie klauzuli gdzie:

AND owner = '<schema owner of the table>' 
+0

Typo: 'USER_CONS_COLUMNS' –

+2

rozróżnia małe i wielkie litery; Powinien być pisany wielkimi literami. –

10
SELECT * FROM USER_CONSTRAINTS 
+2

To nie będzie Ci nazwę kolumny –

6
select constraint_name,constraint_type 
from user_constraints 
where table_name = 'YOUR TABLE NAME'; 

uwaga: nazwa tabeli powinny być w czapkach.

W przypadku, gdy nie znasz nazwy tabeli następnie,

select constraint_name,constraint_type,table_name 
from user_constraints; 
6

może to pomoże:

SELECT constraint_name, constraint_type, column_name 
from user_constraints natural join user_cons_columns 
where table_name = "my_table_name"; 

okrzyki

Powiązane problemy