2009-07-08 46 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

相關問題