SQL/Oracle

[ORACLE] ORA-01758: 테이블은 필수 열을 추가하기 위해(NOT NULL) 비어 있어야 합니다.

멍청한 코더 2021. 10. 16.
728x90

 

 

 

안녕하세요~ '멍청한코더'입니다!!

ORA-01758 컬럼을 추가하면서 NOT NULL 조건을 추가해줄때 생기는 오류입니다

 

위와 같은 메시지를 보셨을 거에요

이건 기존 테이블에 컬럼을 추가하실때 모두 NULL 값이 들어가기 때문에

NOT NULL 조건이 붙지 못하는 거에요

 

이걸 해결하는 방법은 두 가지가 있어요

 

방법1

/*NUMBER 추가*/
ALTER TABLE 테이블명 ADD 컬럼명 NUMBER(20) DEFAULT 0 NOT NULL;

/*VARCHAR2 추가*/
ALTER TABLE 테이블명 ADD 컬럼명 VARCHAR2(20) DEFAULT ' ' NOT NULL;

DEFAULT 값을 지정하면서 넣어주는 것 입니다. 

 

728x90

 

방법2

/*NUMBER 추가*/
ALTER TABLE 테이블명 ADD 컬럼명 NUMBER(20);
UPDATE 테이블명 SET 컬럼명 = 0; -- 지정하고자 하는 값을 넣어주시면 됩니다
ALTER TABLE 테이블명 MODIFY 컬럼명 NOT NULL;

/*VARCHAR2 추가*/
ALTER TABLE 테이블명 ADD 컬럼명 VARCHAR2(20);
UPDATE 테이블명 SET 컬럼명 = ' '; -- 지정하고자 하는 값을 넣어주시면 됩니다
ALTER TABLE 테이블명 MODIFY 컬럼명 NOT NULL;

 

NOT NULL 조건을 처음에는 넣어주지 말고

추후에 지정해주고자 하는 값들을 모두 UPDATE 해준 후에

NOT NULL 조건을 추가해주는 것 입니다

 

기본적으로는 방법1처럼 NOT NULL 조건을 넣을때는

DEFAULT 값을 지정해주는게 좋습니다

 

 

 

728x90

댓글