오라클 테이블, 무결성 제약조건의 활성화, 비활성화
대량의 데이터를 입력하면 제약조건 검사로 시간이 오래 걸리거나 일부 데이터 오류로 무결성 제약조건을 비활성화해야 될 경우가 있습니다. 이럴 때는 제약조건을 비활성화한 후 데이터를 입력받아 수정 후 다시 활성화하면 됩니다.
[기본 형식]
ALTER TABLE table_name ENABLE[NOVALIDATE] CONSTRAINT constraint_name ALTER TABLE table_name DISABLE CONSTRAINT constraint_name |
ALTER TABLE ~ DISABLE CONSTRAINT 명령으로 제약조건을 비활성화, ALTER TABLE ~ ENABLE CONSTRAINT 명령으로 제약조건을 활성화하는 실습을 해보겠습니다.
실습
대체로 테이블 생성시 NOT NULL 제약조건에 대해 이름을 부여하는 경우는 없습니다. 그래서 아래 실습을 하기 위해서는 테이블의 컬럼에 걸린 제약조건 이름을 조회 할 수 있어야 합니다.
CUSTOMER 테이블의 name 컬럼에 걸린 NOT NULL 제약조건의 이름을 확인 합니다. |
SELECT TABLE_NAME
, CONSTRAINT_NAME
, CONSTRAINT_TYPE
, SEARCH_CONDITION
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = 'CUSTOMER';
<실행결과>
| TABLE_NAME | CONSTRAINT_NAME | CONSTRAINT_TYPE | SEARCH_CONDITION |
1 | CUSTOMER | SYS_C007522 | C | "NAME" IS NOT NULL |
name 컬럼의 NOT NULL 제약조건의 이름은 ‘SYS_C007522’ 입니다. 아마도 CONSTRAINT_NAME 컬럼의 값은 독자 여러분의 실행결과와 다를 것 이니 반드시 본인의 CONSTRAINT_NAME 컬럼의 값을 아래 실습에서 사용하세요.
CUSTOMER 테이블의 name 컬럼에 걸린 NOT NULL 제약조건을 비활성화 후 다시 활성화하세요. |
ALTER TABLE CUSTOMER DISABLE CONSTRAINT SYS_C007522 ;
ALTER TABLE CUSTOMER ENABLE CONSTRAINT SYS_C007522 ;
<실행결과>
Table CUSTOMER이(가) 변경되었습니다.
#제약조건활성화, #제약조건비활성화,#오라클, #ORACLE, #DISABLECONSTRAINT