多条记录中的sqlite shift rowid

sqlite shift rowid in multiple records

你好,我有一个 sqlite 数据库,里面有很多记录,比如 10540 条记录,它们按创建时间排序,我想像中间的记录一样移动,并且喜欢自动完成

例如:

select * from table1 where id >= 8521; 
UPDATE Table1 SET id = id +1 ;

不起作用我收到错误:结果:唯一约束失败: 所以我想将所有记录从 8521 向上移动到最后一条记录,并在 8520 位置放置例如这样我就可以将我的记录插入 table 的那个位置。 甚至

id = select max(id)+1

不起作用我如何将 id 从最后一条记录增加到所需的记录,以便我可以在记录 db

中放置一个位置

一个简单的更新语句会失败,因为它会尝试在主键中创建重复值。
你可以做的是:
首先将列更新为它们应该具有的值的负值:

update table1
set id = -(id + 1)
where id > 8520;

现在没有重复了,你只需要再次更新为正值:

update table1
set id = -id
where id < 0; 

这可以解决问题,但是任何类型的更新主键都是推荐的做法