it-swarm.com.de

Zeigt die Namen aller Einschränkungen für eine Tabelle in Oracle SQL an

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? 

94
Jeris Alan

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>'
132
Ollie
SELECT * FROM USER_CONSTRAINTS
12
Paciv

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

8
Van Gogh
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;
7
kapil kumar

Das einzige, was mir Einschränkungen bescherte:

SELECT * FROM ALL_CONSTRAINTS WHERE table_name = 'YOUR TABLE NAME' ;

Ausgewählt aus Oracle-Dokumentation

0
Gweltaz Niquel

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';
0
Raymond Wachaga