星期日, 10月 29, 2017

sqlite3 的 alter table

sqlite3 的 alter table 不能刪除 column 或是修改 column ,只能新增!!
是故,如果要修改或刪除,只能先將原來的 table 更名,然後重新建立,再使用 insert into + select 來插入。
語法示意如下:
BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_backup;
DROP TABLE t1_backup;
COMMIT;
寫這篇,才想到 django migration 可能也因為這限制,所以當資料庫是 sqlite3 時,有刪除或更動 model 屬性時,並沒有真的更動資料表格。

沒有留言: