Ich habe einen Namen für jede Einschränkung für die mehreren Tabellen definiert, die ich in Oracle SQL erstellt habe.
Das Problem ist, dass ich zum Löschen einer Einschränkung für die Spalte einer bestimmten Tabelle den Namen kennen muss, den ich für jede Einschränkung angegeben habe, den ich vergessen habe.
Wie liste ich alle Namen von Einschränkungen auf, die ich für jede Spalte einer Tabelle angegeben habe?
Gibt es dafür eine SQL-Anweisung?
Sie müssen das data dictionary abfragen, insbesondere die USER_CONS_COLUMNS
-Ansicht, um die Tabellenspalten und die entsprechenden Einschränkungen anzuzeigen:
SELECT *
FROM user_cons_columns
WHERE table_name = '<your table name>';
Zu Ihrer Information: Wenn Sie Ihre Tabelle nicht speziell mit einem Kleinbuchstaben (mit Anführungszeichen) erstellt haben, wird der Tabellenname standardmäßig in Großbuchstaben gesetzt.
Wenn Sie weitere Informationen über die Einschränkung erhalten möchten, fragen Sie die USER_CONSTRAINTS
-Ansicht ab:
SELECT *
FROM user_constraints
WHERE table_name = '<your table name>'
AND constraint_name = '<your constraint name>';
Wenn sich die Tabelle in einem Schema befindet, das nicht Ihrem Standardschema entspricht, müssen Sie möglicherweise die Ansichten durch Folgendes ersetzen:
all_cons_columns
und
all_constraints
hinzufügen zur where-Klausel:
AND owner = '<schema owner of the table>'
SELECT * FROM USER_CONSTRAINTS
vielleicht kann das helfen:
SELECT constraint_name, constraint_type, column_name
from user_constraints natural join user_cons_columns
where table_name = "my_table_name";
prost
select constraint_name,constraint_type
from user_constraints
where table_name = 'YOUR TABLE NAME';
hinweis: Der Tabellenname sollte in Großbuchstaben angegeben werden.
Falls Sie den Namen der Tabelle nicht kennen,
select constraint_name,constraint_type,table_name
from user_constraints;
Das einzige, was mir Einschränkungen bescherte:
SELECT * FROM ALL_CONSTRAINTS WHERE table_name = 'YOUR TABLE NAME' ;
Ausgewählt aus Oracle-Dokumentation
Verwenden Sie einen der beiden folgenden Befehle. Alles muss in Großbuchstaben sein. Der Tabellenname muss in Anführungszeichen gesetzt werden:
--SEE THE CONSTRAINTS ON A TABLE
SELECT COLUMN_NAME, CONSTRAINT_NAME FROM USER_CONS_COLUMNS WHERE TABLE_NAME = 'TBL_CUSTOMER';
--OR FOR LESS DETAIL
SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'TBL_CUSTOMER';