Sqlite 如何进行Update批量增加的时候克服唯一性冲突问题?

有一个表Test

img

我想让ID大于3的ID全部加一,从原有的12345,变为12356,ID为主键

经过资料查询,

update test set id=id+1 where id > 3

但是这条语句会触发唯一性的问题,不能进行修改。
我试过这样的语句其实也是不行的,

update test set id=id+1 where id IN (SELECT id FROM test where id>3 order by -id);

请问是否有办法通过一条SQL语句实现该想法,谢谢!

我需要的是一个有效简便的解决方法,如果解决问题,必采纳!

因为你执行的是批量修改
先会修改id=4的记录,将其设置为5,因为id为5是已经存在的,所以导致冲突了。

提供一个思路:
1.新加一个临时id字段:id2
2.update test set id2=id+1 where id > 3;
3.更改表结构,把id2作为主键,删除id,然后再把id2名字改为id

UPDATE test SET id=id+1 WHERE id > 3 ORDER BY id DESC;

一定要修改吗的时候吗,你可以在添加数据的时候根据sql来判断,insert语句后面都跟一个条件