2009-07-08 36 views

回答

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; 
+2

你或许应该给予学分:http://www.sqlite.org/faq.html#q11 – knittl 2010-04-17 10:31:36

1

它可能不是 - sqlite3已经出现一段时间了。你将不得不按照你想要的方式创建另一个数据库,并将数据复制到它。或者,创建一个新表格,复制数据,放下原件并用新的表格替换。

0

你不知道。不支持表的不平凡的修改。 什么你需要做的是:

  1. 的数据复制到一个临时表中删除旧
  2. 创建新表
  3. 从原始表数据复制到它
  4. 创建新表
  5. 复制从临时数据到新表
1

不要忘记,DROP TABLE也下降相关联的触发器。

之前你要修改表使用命令

.scheme TABLE_TO_MODIFY

将转储所有将包括您需要重新创建触发器被丢弃当前语句。

干杯,

Elixon

相关问题