Dba column constraints

De wiki.nexiat.fr
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  : &current_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.