我需要对表的所有主键进行类似的移位
UPDATE TODO SET id = id + 1 但是我不能这样做(来自Ahmad Al-Mutawa答案的Demo )描述了为什么。不能像这样更改主键。
此外,我不能根据这是sqlite:http://www.sqlite.org/omitted.html来修改表
我正在考虑对其他列进行一些硬编码的递归更改,但是如果没有tsql和存储过程,我很难实现它,我该如何实现呢?
发布于 2012-11-07 16:39:44
当您执行UPDATE命令时,您将临时获得重复的ID。
要避免这种情况,请分两步更改in。
首先,选择一个大于最大ID的数字,并将其添加到所有ID中:
UPDATE TODO SET id = id + 1000000000然后,从所有ID中减去1:
UPDATE TODO SET id = id - (1000000000 - 1)发布于 2012-11-07 15:51:11

如果不首先更改表(通过删除主键属性),就不可能更新SQLite主键。
这是SQLFiddle Demo
发布于 2012-11-07 15:47:41
不确定Sqlite是否有禁用主键的功能。如果是,您可以禁用它,更新表,然后重新启用主键。
https://stackoverflow.com/questions/13265244
复制相似问题