如何在sqlite 2数据库表中添加列

时间:2009-07-08 13:44:51

标签: sqlite alter-table sqlite2

如何向现有的sqlite 2数据库表中添加一个附加列,该数据库中包含与之关联的数据和索引。

似乎sqlite2中没有可用的alter table SQL?

4 个答案:

答案 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)

你没有。不支持对表进行非平凡的修改。 你需要做的是:

  1. 将数据复制到临时表中,删除旧的
  2. 创建新表
  3. 将原始表格中的数据复制到其中
  4. 创建新表
  5. 将数据从temp复制到新表