작업을 하다보니 테이블 변경이 필요했고,NOT NULL
컬럼을 추가할 때, 기존 데이터에 대해서는 기본값을 설정해야 한다. 그렇지 않으면 에러가 발생하기 때문이다.
기존 데이터에 대해서 기본값을 설정하려면 DEFAULT
값을 지정해야 한다. 이렇게 하면 기존 레코드들이 새로운 컬럼을 DEFAULT
값으로 채워지기 때문에 에러 없이 추가할 수 있다.
ALTER TABLE problems
ADD COLUMN type VARCHAR(50) NOT NULL DEFAULT 'a';
problems
테이블에 새로운 type
컬럼이 추가되고, 기존 데이터의 type
값은 a
로 설정된다.기존 데이터가 NULL이 될 수 없으므로, 새로운 컬럼에 대한 값을 명시적으로 설정해야 한다. 이 경우, 기존 데이터에 값을 삽입하는 업데이트 쿼리를 작성해야 한다.
예를 들어, problems
테이블에 type
컬럼을 NOT NULL
로 추가하려면 먼저 컬럼을 NULL 허용으로 추가하고, 그 다음에 값을 설정한 후에 NOT NULL
로 변경할 수 있다.
-- 먼저 NULL 허용 컬럼 추가
ALTER TABLE problems ADD COLUMN type VARCHAR(50);
-- 기존 데이터에 값을 설정
UPDATE problems SET type = 'a' WHERE type IS NULL;
-- 그 후, NOT NULL 제약 추가
ALTER TABLE problems MODIFY COLUMN type VARCHAR(50) NOT NULL;
그냥 편하게.. 기본값 추가가 나은 것 같다.