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?
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>'
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é
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;
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';