본문 바로가기

DataBase/Oracle

제약 조건의 확인

1. 테이블에 걸려있는 제약 조건의 확인

- USER_CONS_COLUMNS : 컬럼에 할당된 제약 조건을 볼 수 있습니다.

- USER_CONSTRAINTS : 유저가 소유한 모든 제약 조건을 불 수 있습니다. 

이 두개의 데이터사전을 참조 하면 됩니다.
 

 SQL> SELECT  SUBSTR(A.COLUMN_NAME,1,15) COLUMN_NAME,        -- 컬럼명
               DECODE(B.CONSTRAINT_TYPE,
                                         'P','PRIMARY KEY',
                        'U','UNIQUE KEY',
                      'C','CHECK OR NOT NULL',
                                        'R','FOREIGN KEY') CONSTRAINT_TYPE,      -- 제약조건 TYPE
              A.CONSTRAINT_NAME   CONSTRAINT_NAME             -- 제약 조건 명
        FROM  USER_CONS_COLUMNS  A,  USER_CONSTRAINTS  B  
        WHERE  A.TABLE_NAME = UPPER('&table_name')  
            AND  A.TABLE_NAME = B.TABLE_NAME  
            AND  A.CONSTRAINT_NAME = B.CONSTRAINT_NAME  
        ORDER BY 1;  

-- 테이블 명을 입력 하면 됩니다.
table_name의 값을 입력하십시오: emp2

 
COLUMN_NAME             CONSTRAINT_TYPE   CONSTRAINT_NAME
------------------------------ ----------------- -------------------------
DEPTNO                   CHECK OR NOT NULL      SYS_C001362  
                               FOREIGN KEY                EMP2_FK_DEPTNO
EMPNO                     PRIMARY KEY               EMP2_PK_EMPNO
ENAME                     CHECK OR NOT NULL     EMP2_NN_ENAME
MGR                        UNIQUE KEY                  EMP2_UP_MGR

  emp2 테이블의 모든 제약조건을 보여주고 있습니다.

  SYS로 시작하는 CONSTRAINT명은 USER가 CONSTRAINT NAME을 지정하지 않아
  SYSTEM에서 DEFAULT로 생성한 경우를 보여 줍니다.

 


2. 테이블의 특정 컬럼에 걸려있는 제약 조건의 확인

USER_CONS_COLUMNS : 컬럼에 할당된 제약 조건을 볼 수 있습니다.

SQL>SET LINESIZE 300

SQL>SELECT SUBSTR(TABLE_NAME,1,15)    TABLE_NAMES,  
              SUBSTR(COLUMN_NAME,1,15)   COLUMN_NAME,  
            SUBSTR(CONSTRAINT_NAME,1,25) CONSTRAINT_NAME  
    FROM USER_CONS_COLUMNS  
    WHERE TABLE_NAME = UPPER('&table_name')  
        AND COLUMN_NAME = UPPER('&column_name');  
   
 
table_name의 값을 입력하십시오: emp2
column_name의 값을 입력하십시오: empno
 
TABLE_NAMES        COLUMN_NAME    CONSTRAINT_NAME
-----------------     -------------         -----------------
EMP2                     EMPNO                EMP2_PK_EMPNO

emp2테이블의 empno 컬럼의 제약조건을 보여 줍니다.