2012-03-02 70 views
4

在我的項目中,我使用了一個sqlite數據庫,不幸的是我的朋友犯了一個錯誤。字段沒有正確的類型。 因此,當字段'localid'中的數據(聲明爲整數)大於2147483647時,此字段中的所有條目都設置爲最大值2147483647.SQLite3:如何在不丟失數據的情況下修改fileds的類型

alter table/alter column sql請求不使用sqlite是因爲它支持ALTER TABLE的有限子集:只重命名並添加一個新列。

那麼如何在沒有數據丟失的情況下進行更改?正確創建一個新的數據庫,將所有數據複製到它並刪除舊的?

但也許有更好的辦法?有人有一個想法?

回答

2

繼續這樣的:

  1. 創建包含形成主 鍵和本地ID字段臨時表(I假設這是也不PK)。
  2. 填補臨時表
  3. 降舊列
  4. 添加新的列
  5. 通過從臨時表中選擇新的填充柱(+可以轉化爲新的類型)。

不要忘記可能的外鍵,如果使用列,並記住如果它使轉換順利(可能不需要在您的情況下)時間放寬約束的可能性。

+0

好的,謝謝,我現在很安全。可能適用於其他人:本文還提供了有關此技巧的SQL請求的詳細信息(http://stackoverflow.com/a/805508/791135) – FabianH 2012-03-02 09:04:53

相關問題