我需要所有表一樣移的ID(ID = ID + 1)其中ID是主鍵
UPDATE TODO SET id = id + 1
主鍵移位,但我不能做到這一點(Demo從艾哈邁德-Mutawa答案)描述爲什麼。主鍵不能像這樣改變。
我也可以根據這是源碼不改變表:http://www.sqlite.org/omitted.html
我正在考慮其他columnts但沒有TSQL一些硬編碼的遞歸變化和存儲過程很難讓我怎麼弄我能做了?
我需要所有表一樣移的ID(ID = ID + 1)其中ID是主鍵
UPDATE TODO SET id = id + 1
主鍵移位,但我不能做到這一點(Demo從艾哈邁德-Mutawa答案)描述爲什麼。主鍵不能像這樣改變。
我也可以根據這是源碼不改變表:http://www.sqlite.org/omitted.html
我正在考慮其他columnts但沒有TSQL一些硬編碼的遞歸變化和存儲過程很難讓我怎麼弄我能做了?
當你執行你的命令UPDATE
,你會暫時得到重複的ID。
要避免這種情況,請分兩步更改ID。
首先,選擇一個數字,是不是最大的ID較大,並將其添加到所有ID:
UPDATE TODO SET id = id + 1000000000
然後,從所有的ID減去一個都不能少:
UPDATE TODO SET id = id - (1000000000 - 1)
太棒了!謝謝。完美的作品(http://sqlfiddle.com/#!7/bd109/10) – Cynede
不確定Sqlite是否具有禁用主鍵的功能。如果是,您可以禁用它,更新表格並重新打開主鍵。
根據此:http://www.sqlite.org/omitted.html我不能這樣做 – Cynede
你試過了嗎? –
*爲什麼*你需要改變值,因爲在這裏,似乎是任意的標識符?你應該把它們看作*看起來像數字的不透明斑點。 –
@Patrick B. sqlite對我來說是非常新的,我不能使用tsql和存儲過程。我甚至不知道從哪裏開始。 – Cynede