Affichage rapide des contraintes de base de données Oracle

Lorsque je travaille avec une base de données Oracle, je me retrouve toujours à utiliser SQL * Plus pour de nombreuses requêtes de base de données rapides et sales. En particulier, je recherche souvent des contraintes dans SQL * Plus. Dans cet article, je regarde les vues et les requêtes de la base de données Oracle que j'utilise le plus pour avoir une idée des contraintes auxquelles je suis confronté.

J'ai trouvé que les deux vues les plus importantes pour déterminer les contraintes de base de la base de données sont ALL_CONSTRAINTS (USER_CONSTRAINTS) et ALL_CONS_COLUMNS (ou USER_CONS_COLUMNS). Dans cet article, j'examine certaines requêtes que j'aime utiliser qui tirent parti de ces vues du dictionnaire de données Oracle.

La vue ALL_CONSTRAINTS est idéale pour rechercher les détails de base des contraintes. L'extrait de code SQL * Plus suivant le montre en cours d'utilisation.

displayConstraintInfo.sql

set linesize 180 set verify off accept constraintName prompt "Constraint Name: " SELECT constraint_name, constraint_type, r_constraint_name, table_name, search_condition FROM all_constraints WHERE constraint_name = '&constraintName'; 

L'extrait ci-dessus vous demandera un nom de contrainte, puis fournira certaines caractéristiques fondamentales de cette contrainte fournie par la ALL_CONSTRAINTSvue. L'une de ces caractéristiques est CONSTRAINT_TYPE, qui est l'une des valeurs suivantes: 'C' (Contrainte de vérification), 'P' (Clé primaire), 'R' (Clé référentielle / étrangère), 'U' (Unique), 'V' (avec option de contrôle sur une vue), 'O' (avec lecture seule sur une vue). La requête ci-dessus nécessite que l'on connaisse le nom de la contrainte. La requête suivante affichera des informations similaires pour les contraintes sur une table donnée.

displayConstraintsOnTable.sql

set linesize 180 set verify off accept tableName prompt "Table Name: " SELECT constraint_name, constraint_type, r_constraint_name, table_name, search_condition FROM all_constraints WHERE table_name = '&tableName'; 

La requête ci-dessus fournit les contraintes sur une table donnée, mais il est souvent utile de savoir quelles colonnes en particulier sur la table ont des contraintes. Cela se fait facilement en joignant la vue ALL_CONS_COLUMNS à la vue ALL_CONSTRAINTS.

displayConstraintsOnTableColumns.sql

set linesize 180 set verify off accept tableName prompt "Table Name: " SELECT c.constraint_name, c.constraint_type, c.r_constraint_name, c.table_name, cc.column_name, cc.position, c.search_condition FROM all_constraints c, all_cons_columns cc WHERE c.table_name = '&tableName' AND c.constraint_name = cc.constraint_name; 

Une autre requête utile utilisant ces deux vues liées aux contraintes est celle qui fournit des informations sur les contraintes d'intégrité référentielle ( CONSTRAINT_TYPEde R). En particulier, cette requête simple montre les contraintes pour une table donnée qui sont des contraintes de clé étrangère et de quelles contraintes de clé primaire elles dépendent.

displayForeignKeyConstraints.sql

set linesize 180 set verify off accept tableName prompt "Table Name: " SELECT cf.constraint_name "FOREIGN KEY", cp.constraint_name "DEPENDS ON", cp.table_name, ccp.column_name, ccp.position FROM all_constraints cp, all_cons_columns ccp, all_constraints cf WHERE cp.table_name = '&tableName' AND cp.constraint_name = ccp.constraint_name AND cf.r_constraint_name = cp.constraint_name AND cf.r_constraint_name = ccp.constraint_name; 

Dans cet article, j'ai résumé certaines des requêtes utiles que l'on peut construire à partir des vues Oracle Data Dictionary ALL_CONSTRAINTSet ALL_USER_CONS_COLUMNS.

Publication originale disponible sur //marxsoftware.blogspot.com/ (Inspiré par des événements réels)

Cette histoire, "Visualisation rapide des contraintes de base de données Oracle" a été initialement publiée par JavaWorld.