문서유형ㅣ기술정보
분야ㅣ관리/환경설정
적용제품버전ㅣTibero5, Tibero6, Tibero7
문서번호ㅣTADTI204
개요
이미 데이터가 존재하는 테이블에 NOT NULL 조건을 가지는 컬럼을ALTER TABLE ADD 방식으로 추가할 경우, 기존 데이터에 NULL 값이 포함되어 있으면 오류가 발생합니다.
본 문서에서는 해당 오류를 회피하여 NOT NULL 조건을 가지는 컬럼을 추가하는 두 가지 방법을 설명합니다.
방법
1. DEFAULT 값을 포함하여 NOT NULL 컬럼 추가
테스트 시나리오
CREATE TABLE TEST (A NUMBER, B NUMBER);
INSERT INTO TEST VALUES (10, '');
COMMIT;- NOT NULL 컬럼을 직접 추가하는 경우
ALTER TABLE TEST ADD (C VARCHAR2(10) NOT NULL);
TBR-7045: A column contains a NULL value: cannot create or enable the constraint.- DEFAULT 값을 포함하여 컬럼 추가
ALTER TABLE TEST ADD (C VARCHAR2(10) DEFAULT 'TEST' NOT NULL);
Table 'TEST' altered.
2. 컬럼 추가 후 NOT NULL 제약조건을 적용하는 방법
(CHECK 제약조건 + NOVALIDATE)
테스트 시나리오
CREATE TABLE TEST (A NUMBER, B NUMBER);
INSERT INTO TEST VALUES (10, '');
COMMIT;
ALTER TABLE TEST ADD (D VARCHAR2(10));- CHECK 제약조건 적용 시
ALTER TABLE TEST ADD CONSTRAINT D_NOT_NULL CHECK (D IS NOT NULL);
TBR-7161: Unable to validate (TEST.D_NOT_NULL): constraint violated.- NOVALIDATE 옵션을 사용하여 제약조건 추가
ALTER TABLE TEST ADD CONSTRAINT D_NOT_NULL CHECK (D IS NOT NULL) NOVALIDATE;
Table 'TEST' altered.※ NOVALIDATE 옵션은 기존 데이터에 대해서는 제약조건 검증을 수행하지 않으며,
이후 입력되는 데이터에 대해서만 제약조건을 적용합니다.