多个记录中的sqlite shift rowid

问题描述 投票:-1回答:1

您好我有一个sqlite数据库,有许多记录,如10540记录,他们按创建时间排序,我想像中间的记录一样转移,喜欢自动执行

例如 :

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

不起作用我得到错误:结果:UNIQUE约束失败:所以我想将所有记录从8521转移到最后一条记录,并在8520位置获取位置,例如我可以在表格的那个地方插入我的记录。即便是

id = select max(id)+1

不起作用我怎么能将id从最后一个记录增加到所需的记录,所以我可以在记录数据库中放置一个位置

sqlite shift rowid
1个回答
0
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.