多条记录中的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;
这可以解决问题,但是任何类型的更新主键都是不推荐的做法
你好,我有一个 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;
这可以解决问题,但是任何类型的更新主键都是不推荐的做法