programmera.net -> oracle -> normal     för utskrift      info@programmera.net

USER_CONS_COLUMNS

1. USER_CONS_COLUMNS
2. Exempel

1. USER_CONS_COLUMNS

Tabellen USER_CONS_COLUMNS beskriver vilka kolumner som är inblandade i en restriktion. Varför visas inte kolumnens namn i USER_CONSTRAINTS? Jo för att vissa restriktioner spänner över flera kolumner i en tabell. Ett exempel är en primär nyckel som kan bestå av flera av tabellens kolumner. USER_CONS_COLUMNS har följande kolumner:
SQL> DESC USER_CONS_COLUMNS;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------

 OWNER                                     NOT NULL VARCHAR2(30)
 CONSTRAINT_NAME                           NOT NULL VARCHAR2(30)
 TABLE_NAME                                NOT NULL VARCHAR2(30)
 COLUMN_NAME                                        VARCHAR2(4000)
 POSITION                                           NUMBER

2. Exempel

Vi skapade tidigare två tabller; EMP och DEP med följande kolumner:



Vi tittar på raderna i USER_CONS_COLUMNS för dessa tabeller:
SQL>  SELECT * FROM user_cons_columns ORDER BY constraint_name;

OWNER           CONSTRAINT_NAME      TABLE_NAME           COLUMN_NAME            POSITION
--------------- -------------------- -------------------- -------------------- ----------
APP1            CONS_FK_EMP_DEP      EMP                  DEP_PK                        1
APP1            CONS_PK_DEP          DEP                  DEP_PK                        1
APP1            CONS_PK_EMP          EMP                  EMP_PK                        1
APP1            SYS_C005311          EMP                  FIRST_NAME
APP1            SYS_C005312          EMP                  LAST_NAME
APP1            SYS_C005313          DEP                  DEP_NAME

6 rows selected.

Vi kan kombinera vyn USER_CONS_COLUMNS med USER_CONSTRAINTS för att även se restriktionens typ:
SQL> 
SELECT a.constraint_name, a.constraint_type, a.table_name, b.column_name
  FROM 	user_constraints a, user_cons_columns b
  WHERE a.constraint_name = b.constraint_name
  ORDER BY a.constraint_name; 

CONSTRAINT_NAME      C TABLE_NAME           COLUMN_NAME
-------------------- - -------------------- --------------------
CONS_FK_EMP_DEP      R EMP                  DEP_PK
CONS_PK_DEP          P DEP                  DEP_PK
CONS_PK_EMP          P EMP                  EMP_PK
SYS_C005311          C EMP                  FIRST_NAME
SYS_C005312          C EMP                  LAST_NAME
SYS_C005313          C DEP                  DEP_NAME

6 rows selected.