我有一個sqlite表,我需要保持ID不變,當我VACUUM數據庫。該文檔說VACUUM不會更改具有顯式INTEGER PRIMARY KEY的表的rowid。SQLite兩個rowid的創建時,我明確地創建一個
所以,我創建了一個表
CREATE TABLE tableName (
"rowid" INTEGER PRIMARY KEY,
"updated" DATETIME DEFAULT (CURRENT_TIMESTAMP),
"description" TEXT
)
但是,使一個表有兩個ROWID列。在Firefox的SQLite管理器插件中,我看到了兩個,當我嘗試訪問Java中的結果集時,它會顯示「不明確的列:'rowid'」。有沒有辦法顯式創建rowid或我必須使用不同的名稱?
如果我這樣做,那麼我必須返回並更改我的代碼以使用id而不是rowid。可以但是... – user1404617
你確定嗎?我記得在SQLite文檔中讀到,如果行定義包含一個字段「INTEGER PRIMARY KEY」,SQLite不會生成自己的內部rowid。事實上,上面的鏈接是包含該語言的文檔。 – scottb
我可以建議將此部分添加到您的答案嗎? *「如果一個表的主鍵由單個列組成,並且該列的聲明類型是大小寫混合的」INTEGER「,那麼該列將成爲rowid的別名。」*我發現這部分更加澄清了這種情況。 – dic19