如何向现有的sqlite 2数据库表中添加一个附加列,该数据库中包含与之关联的数据和索引。
似乎sqlite2中没有可用的alter table SQL?
答案 0 :(得分:5)
来自SqLite FAQ:
SQLite限制了ALTER TABLE支持,您可以使用该支持将列添加到表的末尾或更改表的名称。如果要在表的结构中进行更复杂的更改,则必须重新创建表。您可以将现有数据保存到临时表,删除旧表,创建新表,然后将数据从临时表中复制回来。
例如,假设您有一个名为“t1”的表,其中列名为“a”,“b”和“c”,并且您要从此表中删除列“c”。以下步骤说明了如何做到这一点:
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;
答案 1 :(得分:1)
可能不是 - sqlite3已经出了一段时间了。您必须按照您希望的方式创建另一个数据库,并将数据复制到该数据库。或者,创建一个新表,复制数据,删除原始数据并替换为新表。
答案 2 :(得分:1)
不要忘记DROP TABLE还会删除相关的TRIGGER。
在您要修改表之前,请使用命令
.scheme TABLE_TO_MODIFY
将转储将要删除的所有当前语句,包括您需要重新创建的TRIGGER。
干杯,
Elixon
答案 3 :(得分:0)
你没有。不支持对表进行非平凡的修改。 你需要做的是: