多记录中的sqlite shift rowid

时间:2019-04-25 19:36:41

标签: sqlite shift rowid

您好,我有一个sqlite数据库,其中包含许多记录,例如10540条记录,它们是按创建时间排序的,我想像中间的一条记录一样移动并喜欢自动执行

例如:

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

不起作用,我得到错误:结果:唯一约束失败: 所以我想将所有记录从8521移到最后一条记录,并获得例如8520的位置,以便我可以将记录插入表的该位置。 甚至

id = select max(id)+1

不起作用,如何将ID从最后一条记录增加到所需的记录,以便可以在记录db中放置一个位置

1 个答案:

答案 0 :(得分:0)

一个简单的update语句将失败,因为它将尝试在主键中创建重复的值。
您可以执行以下操作:
首先将列更新为应具有的负值:

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

现在没有重复项,您只需要再次更新为正值即可。

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

这可以解决问题,但是任何更新主键的操作不是推荐的操作