SQL_Constraint Enable / Disable
§ 제약조건 활성화 / 비활성화
※ Data Dictionary
로그인 상태에서 작업한 내용이 전부 테이블 형태로 기록됨
Oracle 자체에서 제공하는 기능이며, System Table에 저장됨
- user_XXX : 로그인한 계정들로 조회 가능
ex) desc user_constraints - dba_XXX : 관리자만 조회 가능
- all_XXX : 관리자 / 일반 계정 조회 가능
# 예제
▶ 제약조건 테이블 구조 확인 _ scott 계정
[ SQL> desc user_constraints ]
이름 | 널? | 유형 |
---|---|---|
... | ... | ... |
CONSTRAINT_NAME 제약조건 이름 |
NOT NULL | VARCHAR2(30) |
CONSTRAINT_TYPE 제약조건 종류 |
VARCHAR2(1) | |
TABLE_NAME 테이블 이름 |
NOT NULL | VARCHAR2(30) |
STATUS 제약조건 활성화 상태 |
VARCHAR2(8) | |
... | ... | ... |
▶ emp테이블의 제약조건 이름, 종류, 테이블 이름, 제약조건 상태 조회 _ scott
[ SQL> select constraint_name, constraint_type, table_name, status
from user_constraints where table_name=upper('&table_name');
table_name의 값을 입력하십시오: emp ]
CONSTRAINT_NAME | CONSTRAINT_TYPE | TABLE_NAME | STATUS |
---|---|---|---|
PK_EMP | P(rimary key) | EMP | ENABLED |
FK_DEPTNO | R(eferences) | EMP | ENABLED |
※ ENABLED : 작동 중 / DISABLED : 비작동 중
§ 제약조건 활성화 / 비활성화 형식
[ SQL> alter table 수정table명 enable / disable constraint 제약조건이름 ]
# 제약조건 활성화 / 비활성화 예제 _ test1 계정
▶ 제약조건 비활성화
[ SQL > alter table b_prtest disable constraint B_PRTEST_CK_AGE;
select constraint_name, status from user_constraints where status='DISABLED'; ]
CONSTRAINT_NAME | STATUS |
---|---|
B_PRTEST_CK_AGE | DISABLED |
▶ 제약조건 활성화
[ SQL > alter table b_prtest enable constraint B_PRTEST_CK_AGE;
select constraint_name, status from user_constraints
where constraint_name='B_PRTEST_CK_AGE'; ]
CONSTRAINT_NAME | STATUS |
---|---|
B_PRTEST_CK_AGE | ENABLED |
제약조건 활성화/비활성화 방법에 대해 알고 있으면 제약조건을 무조건 삭제하기보다,
불필요할 때는 비활성화를 해 두었다가 필요할 때 다시 활성화할 수 있을 것입니다.