移动表的id(id = id + 1),其中id是主键

cnd*_*cnd 3 sql sqlite

我需要将所有主键都移动到表格中

UPDATE TODO SET id = id + 1 
Run Code Online (Sandbox Code Playgroud)

但是我不能这样做( 来自Ahmad Al-Mutawa的演示答案)描述为什么.主键不能像这样改变.

另外我不能改变表格,因为这是sqlite:http://www.sqlite.org/omitted.html

我正在考虑对其他columnts进行一些硬编码的递归更改,但是如果没有tsql和存储过程,我很难得到如何制作它?

CL.*_*CL. 6

执行UPDATE命令时,您将暂时获得重复的ID.

要避免这种情况,请分两步更改ID.
首先,选择一个大于最大ID的数字,并将其添加到所有ID:

UPDATE TODO SET id = id + 1000000000
Run Code Online (Sandbox Code Playgroud)

然后,从所有ID中减去一个:

UPDATE TODO SET id = id - (1000000000 - 1)
Run Code Online (Sandbox Code Playgroud)