我想找到刪除SQLite列中的最佳方法。這裏有兩種方法,我發現:SQLite刪除列的方法:使用臨時表與重命名使用ALTER TABLE
從官方網站http://www.sqlite.org/faq.html#q11:
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;
和How to delete or add column in SQLITE?(這也是從官方網站http://sqlite.org/lang_altertable.html):
1. create new table as the one you are trying to change,
2. copy all data,
3. drop old table,
4. rename the new one.
第一種方法使用一個臨時表作爲中間人來保存價值。第二種方法直接將值複製到新表並稍後重命名錶名。從頂級的角度來看,這些是我看到的唯一差異。哪一個更有效?選擇一個優勢是否有優勢?
是否有任何我應該注意的回滾安全的基礎信息?
在我看來,第二個效率更高,因爲只有一個'INSERT' – cha 2014-09-03 23:21:01
如果做第二個方法,我會先重命名舊錶,然後創建新表,然後複製。這個放置是可選的,並且可以在確認新表正在按預期工作之後完成。 – Turophile 2014-09-04 08:00:32