Dba column constraints
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Type | Script SQL*Plus de diagnostic |
| Domaine | Administration (dictionnaire de données) |
| Voir aussi | Dba compare schemas · Dba errors |
Dba_column_constraints liste, pour une table donnée, toutes les contraintes qui portent sur chacune de ses colonnes (clé primaire, clé étrangère, unicité, check...), en s'appuyant sur la vue DBA_CONS_COLUMNS. Le script demande interactivement le schéma et le nom de la table à inspecter.
C'est un outil de diagnostic rapide pour savoir, colonne par colonne, quelles contraintes s'y appliquent, sans avoir à croiser manuellement DBA_CONSTRAINTS et DBA_CONS_COLUMNS.
Script
SET TERMOUT OFF
COLUMN current_instance NEW_VALUE current_instance NOPRINT
SELECT RPAD(instance_name, 17) current_instance FROM v$instance;
SET TERMOUT ON
PROMPT
PROMPT +------------------------------------------------------------------------+
PROMPT | Rapport : Contraintes par colonne pour une table donnée |
PROMPT | Instance : ¤t_instance |
PROMPT +------------------------------------------------------------------------+
PROMPT
ACCEPT schema CHAR PROMPT 'Schéma : '
ACCEPT tab_name CHAR PROMPT 'Table : '
SET ECHO OFF
SET FEEDBACK 6
SET HEADING ON
SET LINESIZE 180
SET PAGESIZE 50000
SET VERIFY OFF
CLEAR COLUMNS
CLEAR BREAKS
CLEAR COMPUTES
COLUMN constraint_name FORMAT a20 HEADING 'Nom contrainte'
COLUMN table_name FORMAT a20 HEADING 'Table'
COLUMN column_name FORMAT a25 HEADING 'Colonne'
COLUMN position FORMAT 999,999,999 HEADING 'Position'
BREAK ON report ON owner ON table_name SKIP 1
SELECT
owner
, table_name
, constraint_name
, column_name
, position
FROM
dba_cons_columns
WHERE
owner = UPPER('&schema')
AND table_name = UPPER('&tab_name')
ORDER BY
owner
, table_name
, constraint_name
, position
/
Colonnes / sortie
- Nom contrainte : nom de la contrainte (PK, FK, CHECK, UNIQUE...).
- Position : rang de la colonne dans une contrainte composite (utile pour reconstituer l'ordre d'une clé multi-colonnes).
Le script ne remonte pas le type de contrainte (constraint_type) ni la condition de CHECK : pour cela, il faut croiser le résultat avec DBA_CONSTRAINTS sur (owner, constraint_name).
Voir aussi
- Dba compare schemas — compare les contraintes (et bien d'autres objets) entre deux schémas.
- Dba errors — diagnostic des objets PL/SQL invalides.