[DB] 컬럼 추가와 DEFAULT, NOT NULL 제약조건 추가

SSuyn·2023년 8월 22일
0

DataBase

목록 보기
10/10

컬럼추가

종종 기존 테이블에 컬럼을 추가하는 일이 발생한다.
이때 우리는 default 값 혹은 null 값 제약 조건을 주는데, 칼럼을 생성하고 제약조건을 주는 경우와 컬럼을 생성하면서 제약조건을 주는 건 완전히 다르게 진행된다.

1. 컬럼 추가시 default 값을 지정하는 경우

ALTER TABLE TEST.EMP ADD AGE NUMBER DEFAULT 0;

2. 컬럼 추가 후, default 값을 지정하는 경우

ALTER TABLE TEST.EMP ADD AGE NUMBER;
ALTER TABLE TEST.EMP MODIFY AGE DEFAULT 0;

① 과 같은 방식으로 하면 전에 입력하였던 칼럼들까지 모두 default가 0 인지 조회해야함으로 시간이 많이 걸려 lock이 발생하거나 타임아웃으로 실패할 수도 있다. (Alter ddl 명령어)

②의 경우는 add 칼럼 후 modify 하는 방식으로 default, not null 제약조건 넣으면 기존 레코드에 대한 값은 변경되지 않고, 앞으로의 부분만 제약됨으로 부하가 덜하다.

이럴때는 개발자에게 의도를 물어봐야 한다. (전에 데이터도 default 0 으로 바꾸길 바라냐, 아니면 현재 데이터부터 default 0이면 되는것인가).

[결론]
테이블 컬럼 추가를 할 때 default값이나 null 값 부여할때 주의하자. 트랜잭션이 많이 발생하는 테이블에 컬럼을 추가할때 default 제약조건을 함께 줄 경우, 새로 추가된 컬럼에 default 값 설정하느라 테이블이 상당 시간동안 접근 불가능한 상태가 될 수도 있다.

profile
한량 DBA

0개의 댓글