Data Base_Oracle/SQL

SQL_Constraint Enable / Disable

pathas 2020. 1. 6. 21:43

§ 제약조건 활성화 / 비활성화

※ 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

제약조건 활성화/비활성화 방법에 대해 알고 있으면 제약조건을 무조건 삭제하기보다,

불필요할 때는 비활성화를 해 두었다가 필요할 때 다시 활성화할 수 있을 것입니다.