Afficher les noms de toutes les contraintes d'une table dans Oracle SQL
115
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 supprimer 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, ce que j'ai oublié.
Comment lister tous les noms de contraintes que j'ai spécifiés pour chaque colonne d'une table?
Vous devez interroger le dictionnaire de données , en particulier la USER_CONS_COLUMNSvue pour voir les colonnes de la table et les contraintes correspondantes:
SELECT*FROM user_cons_columns
WHERE table_name ='<your table name>';
Pour info, à moins que vous n'ayez spécifiquement créé votre table avec un nom en minuscule (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 ensuite voir plus d'informations sur la contrainte elle-même, interrogez la USER_CONSTRAINTSvue:
<le nom de votre table> est sensible à la casse, je pense; Il doit être en majuscules.
Kanagavelu Sugumar
Le ownerchamp dans (user | all | dba) _constraints et (user | all | dba) _cons_columns est le propriétaire de la contrainte, pas le propriétaire de la table (selon la documentation Oracle). Le propriétaire de la table n'est un champ disponible dans aucune de ces vues. Cela signifie-t-il que le propriétaire de la contrainte et le propriétaire de la table doivent être identiques?
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 TABLESELECT COLUMN_NAME, CONSTRAINT_NAME FROM USER_CONS_COLUMNS WHERE TABLE_NAME ='TBL_CUSTOMER';--OR FOR LESS DETAILSELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME ='TBL_CUSTOMER';
USER_CONS_COLUMNS
owner
champ dans (user | all | dba) _constraints et (user | all | dba) _cons_columns est le propriétaire de la contrainte, pas le propriétaire de la table (selon la documentation Oracle). Le propriétaire de la table n'est un champ disponible dans aucune de ces vues. Cela signifie-t-il que le propriétaire de la contrainte et le propriétaire de la table doivent être identiques?la source
peut-être que cela peut aider:
à votre santé
la source
Remarque: le nom de la table doit être en majuscules.
Si vous ne connaissez pas le nom de la table,
la source
Les bases de données d'entreprise ont souvent plusieurs utilisateurs et je ne suis pas toujours sur le bon:
Tiré de la documentation Oracle
la source
Utilisez l'une des deux commandes ci-dessous. Tout doit être en majuscules. Le nom de la table doit être placé entre guillemets:
la source