是故,如果要修改或刪除,只能先將原來的 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 屬性時,並沒有真的更動資料表格。
沒有留言:
張貼留言