일부러 반쪽만 만들어 놨어
SQLite의 ALTER TABLE은 Postgres보다 일부러 좁게 만들어져 있어. 되는 건 이게 다야.
ALTER TABLE t RENAME TO new_nameALTER TABLE t RENAME COLUMN old_name TO new_name(3.25+)ALTER TABLE t ADD COLUMN c TYPE [constraints]ALTER TABLE t DROP COLUMN c(3.35+)
컬럼 타입은 못 바꾸고, 기존 컬럼에 제약을 더 얹지도 못하고, 컬럼 순서도 못 건드려. 그런 게 필요하면 정통 패턴은 CTAS dance야. 원하는 모양으로 새 테이블을 만들고, 데이터를 옮기고, 옛 테이블을 drop하고, 이름을 바꿔 다는 거지.
Warning: 상수가 아닌 default를 달고
ADD COLUMN을 하면 — 예를 들어 DEFAULT (random()) — 거부당해. default는 literal이거나 상수 표현식이어야 하거든. 우회로는 간단해. NULL default로 컬럼을 먼저 붙이고 UPDATE로 채우면 돼.