개요
데이터가 존재하는 테이블에 NOT NULL 조건을 ALTER TABLE ADD 컬럼으로 추가할 경우, 기존에 데이터가 있기 때문에 오류가 발생합니다.
기존 데이터가 있는 테이블에 NOT NULL 제약조건 컬럼을 안전하게 추가하는 방법을 설명합니다.
방법
DEAFULT 값을 같이 추가하는 방법
CREATE TABLE TEST (A NUMBER, B NUMBER);
INSERT INTO TEST VALUES (10, '');
COMMIT;
ALTER TABLE TEST ADD (C VARCHAR2(10) NOT NULL); // 기존에 데이터가 있어 오류발생
ALTER TABLE TEST ADD (C VARCHAR2(10) DEFAULT 'TEST' NOT NULL);
SQL
복사
컬럼 추가 후 Not Null 제약조건을 추가하는 방법
CREATE TABLE TEST (A NUMBER, B NUMBER);
INSERT INTO TEST VALUES (10, '');
COMMIT;
ALTER TABLE TEST ADD (D VARCHAR2(10));
ALTER TABLE TEST ADD CONSTRAINT D_NOT_NULL CHECK(D IS NOT NULL) NOVALIDATE;
SQL
복사
참고
•
NOVALIDATE 옵션: 기존 데이터들에 대해 체크하지 않는 옵션