1

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

似乎在 sqlite2 中不可用的 alter table SQL?

4

4 回答 4

5

Sqlite 常见问题解答

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;
于 2009-07-08T13:49:12.033 回答
1

可能不是—— sqlite3 已经出现了一段时间。您必须按照您想要的方式使用该表创建另一个数据库并将数据复制到其中。或者,创建一个新表,复制数据,删除原始表并替换为新表。

于 2009-07-08T13:47:57.543 回答
1

不要忘记 DROP TABLE 也会丢弃相关的 TRIGGER。

在你要修改表之前使用命令

.scheme TABLE_TO_MODIFY

这将转储所有将被删除的当前语句,包括您需要重新创建的触发器。

干杯,

埃利克森

于 2011-10-22T16:56:34.127 回答
0

你没有。不支持对表进行重大修改。你需要做的是:

  1. 将数据复制到临时表中删除旧的
  2. 创建新表
  3. 将原始表中的数据复制到其中
  4. 创建新表
  5. 将 temp 中的数据复制到新表中
于 2009-07-08T14:07:53.213 回答