gpt4 book ai didi

java - SQLite删除列: Using temporary table vs Renaming using ALTER TABLE的方法

转载 作者:太空宇宙 更新时间:2023-11-04 14:35:23 40 4
gpt4 key购买 nike

我正在尝试找到在 SQLite 中删除列的最佳方法。这是我发现的两种方法:

来自官网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.

第一种方法使用临时表作为中间人来保存值。第二种方法直接将值复制到新表并稍后重命名表名。从顶层来看,这些是我看到的唯一差异。哪一种效率更高?选择其中之一是否有优势?

是否有任何我应该注意的基本信息,例如回滚安全?

最佳答案

使用临时表可能会更慢,因为所有数据必须复制两次。但是,创建新表然后重命名需要更多的实际数据库空间(需要同时保存新旧表),而临时表将存储在 temporary database 中。 .

这两种方法在事务内运行时都是完全安全的。

关于java - SQLite删除列: Using temporary table vs Renaming using ALTER TABLE的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25654506/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com