Afficher les noms de toutes les contraintes d'une table dans Oracle SQL

J'ai défini un nom pour chacune des contraintes pour les multiples tables que j'ai créées dans Oracle SQL.

Le problème est que pour déposer une contrainte pour la colonne d'un tableau particulier, j'ai besoin de savoir le nom que j'ai fourni pour chacune des contraintes, dont j'ai oublié.

Comment lister tous les noms de contraintes que j'ai spécifiés pour chaque colonne d'une table?

Y a-t-il une instruction SQL pour le faire?

88
demandé sur Jeris Alan 2012-08-09 12:10:44

5 réponses

Vous devez interroger le dictionnaire de données , en particulier la vue USER_CONS_COLUMNS pour voir les colonnes de la table et les contraintes correspondantes:

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

POUR INFO, sauf si vous avez spécifiquement créé votre table avec un nom en minuscules (en utilisant des guillemets doubles), le nom de la table sera par défaut en majuscules, alors assurez-vous qu'il en est ainsi dans votre requête.

Si vous souhaitez voir plus d'informations sur la contrainte elle-même, interrogez la vue USER_CONSTRAINTS:

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

Si la table est tenue dans un schéma n'est pas votre schéma par défaut, vous devrez peut-être remplacer les vues par:

all_cons_columns

Et

all_constraints

Ajout à la clause where:

   AND owner = '<schema owner of the table>'
121
répondu Ollie 2014-11-03 11:04:22
SELECT * FROM USER_CONSTRAINTS
11
répondu Paciv 2012-08-09 08:15:48

Peut-être que cela peut aider:

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

Santé

8
répondu Van Gogh 2014-04-02 12:46:07
select constraint_name,constraint_type 
from user_constraints
where table_name = 'YOUR TABLE NAME';

Note: le nom de la table doit être en majuscules.

Si vous ne connaissez pas le nom de la table alors,

select constraint_name,constraint_type,table_name 
from user_constraints;
7
répondu kapil kumar 2014-01-07 11:59:01

Utilisez l'une des deux commandes ci-dessous. Tout doit être en majuscules. Le nom de la table doit être placé entre guillemets:

--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
répondu Raymond Wachaga 2018-10-02 22:18:50