SQLite은 테이블이 이미 만들어진 후에는 제약조건을 수정할 수 없다.
만약 데이터를 보존하면서 테이블에 제약조건만 바꾸고 싶은 경우에는 새 테이블을 만들어서 데이터를 복사한 후 이전 테이블을 삭제하는 방법이 있다.
1. 기존 테이블 스키마에서 제약조건을 포함한 새로운 스키마를 이용해 새 테이블을 만든다.
- 기존 테이블[example] 스키마
CREATE TABLE example(
id varchar(12)
name varchar(12),
age varchar(2)
);
- 새 테이블[new_example] 스키마
CREATE TABLE new_example(
id varchar(12)
name varchar(12),
age varchar(2),
PRIMARY KEY(id)
);
2. 기존 테이블에서 새 테이블로 모든 데이터를 복사한다.
INSERT INTO new_example SELECT * FROM example;
3. 기존 테이블을 삭제한다.
DROP TABLE example;
4. 새 테이블의 이름을 기존 테이블의 이름으로 바꾼다.
ALTER TABLE new_example RENAME TO example;
이렇게 하면 기존 테이블의 데이터를 그대로 유지하면서 테이블의 제약조건만 변경할 수 있다.