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 laisser tomber une contrainte pour la colonne d’une table particulière, j’ai besoin de connaître le nom que j’ai fourni pour chaque contrainte, que j’ai oubliée.
Comment puis-je lister tous les noms de contraintes que j’ai spécifiés pour chaque colonne d’un tableau?
Existe-t-il une instruction SQL pour le faire?
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 = '';
FYI, à moins que vous ayez spécifiquement créé votre table avec un nom en minuscule (en utilisant des guillemets), le nom de la table sera mis par défaut en majuscule, alors assurez-vous qu’il l’est dans votre requête.
Si vous souhaitez ensuite voir plus d’informations sur la contrainte elle-même, interrogez la vue USER_CONSTRAINTS
:
SELECT * FROM user_constraints WHERE table_name = '' AND constraint_name = ' ';
Si la table est contenue dans un schéma qui n’est pas votre schéma par défaut, vous devrez peut-être remplacer les vues par:
all_cons_columns
et
all_constraints
en ajoutant à la clause where:
AND owner = ''
SELECT * FROM USER_CONSTRAINTS
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";
à votre santé
select constraint_name,constraint_type from user_constraints where table_name = 'YOUR TABLE NAME';
note: le nom de la table doit être en majuscule.
Au cas où vous ne connaissez pas le nom de la table alors,
select constraint_name,constraint_type,table_name from user_constraints;