Database-Design
複製一個保留自定義_id的sqlite3表
我正在嘗試複製一個表,其
_id
欄位由具有一些間隙的整數給出,例如 1,2,5,7,可能是由於已刪除的消息。(這是我正在操作的 Whatsapp 數據庫的玩具模型。)我想複製保留標籤 1、2、5、7 的表格,而不是
AUTOINCREMENT
下面給出的 1、2、3、4。正確的方法是什麼?
CREATE TABLE messages (_id INTEGER PRIMARY KEY AUTOINCREMENT, key_remote_jid TEXT NOT NULL); ATTACH 'msgstoreF.db' AS android; INSERT INTO messages (key_remote_jid) SELECT key_remote_jid FROM android.messages;
我可以通過
CREATE TABLE messages (_id INTEGER PRIMARY KEY, key_remote_jid TEXT NOT NULL); ATTACH 'msgstoreF.db' AS android; INSERT INTO messages (_id, key_remote_jid) SELECT _id, key_remote_jid FROM android.messages;
但是這樣的表不包含在
sqlite_sequence
.
只需將 ID 值複製到:
CREATE TABLE messages (_id INTEGER PRIMARY KEY AUTOINCREMENT, key_remote_jid TEXT NOT NULL); ATTACH 'msgstoreF.db' AS android; INSERT INTO messages (_id, key_remote_jid) SELECT _id, key_remote_jid FROM android.messages;
請閱讀SQLite 自動增量文件。新的 ID 值不會與手動插入的值衝突。(您可能不需要指定 AUTOINCREMENT 關鍵字。)