1. USER_CONSTRAINTS
Tabellen USER_CONSTRAINTS håller reda på vilka restriktioner som finns i användarens schema. Tabellen har följande utseende:
SQL> DESC USER_CONSTRAINTS;
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(30)
CONSTRAINT_NAME NOT NULL VARCHAR2(30)
CONSTRAINT_TYPE VARCHAR2(1)
TABLE_NAME NOT NULL VARCHAR2(30)
SEARCH_CONDITION LONG
R_OWNER VARCHAR2(30)
R_CONSTRAINT_NAME VARCHAR2(30)
DELETE_RULE VARCHAR2(9)
STATUS VARCHAR2(8)
DEFERRABLE VARCHAR2(14)
DEFERRED VARCHAR2(9)
VALIDATED VARCHAR2(13)
GENERATED VARCHAR2(14)
BAD VARCHAR2(3)
LAST_CHANGE DATE
|
Speciellt bör tilläggas att kolumnen CONSTRAINT_TYPE innehåller förkortningen på kolumnens typ (C,U,P,R).
2. Exempel
Vi skapade tidigare två tabller; EMP och DEP med följande kolumner:
Vi tittar på raderna i USER_CONSTRAINTS för dessa två tabeller:
SQL> SELECT constraint_name, constraint_type, table_name, status, index_name
2 FROM user_constraints
3 ORDER BY constraint_name;
CONSTRAINT_NAME C TABLE_NAME STATUS INDEX_NAME
-------------------- - -------------------- -------- ------------------------------
CONS_FK_EMP_DEP R EMP ENABLED
CONS_PK_DEP P DEP ENABLED CONS_PK_DEP
CONS_PK_EMP P EMP ENABLED CONS_PK_EMP
SYS_C005311 C EMP ENABLED
SYS_C005312 C EMP ENABLED
SYS_C005313 C DEP ENABLED
6 rows selected.
|
Vi har alltså följande typer av restriktioner:
- R=Referens: Restriktionen CONS_FK_EMP_DEP är en "foreign key".
- P=Primär nyckel: Restriktionerna CONS_PK_DEP och CONS_PK_EMP är primära nycklar. De har också ett tillhörande index.
- C=Check: Restriktionerna som börjar på SYS_ är NOT NULL-restriktioner.
Alla restriktionerna är ENABLED (eftersom vi inte har gjort DISABLE på dem).