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 컬럼의 제약조건을 보여 줍니다.
'DataBase > Oracle' 카테고리의 다른 글
[퍼옴]질문과 답변에 올라온 오라클 TIP들 (0) | 2008.08.08 |
---|---|
[퍼옴]중복된 RECORD 삭제 방법 (0) | 2008.08.08 |
[퍼옴]재미있는 SQL문(계층구조 쿼리의 예제) (0) | 2008.08.08 |
유저의 패스워드를 쉽게 바꾸는 방법 (0) | 2008.08.08 |
[퍼옴]옵티마이져(OPTIMIZER) (0) | 2008.08.08 |