首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表的移位id类似(id = id + 1),其中id是主键

表的移位id类似(id = id + 1),其中id是主键
EN

Stack Overflow用户
提问于 2012-11-07 15:44:31
回答 3查看 2K关注 0票数 3

我需要对表的所有主键进行类似的移位

代码语言:javascript
复制
UPDATE TODO SET id = id + 1 

但是我不能这样做(来自Ahmad Al-Mutawa答案的Demo )描述了为什么。不能像这样更改主键。

此外,我不能根据这是sqlite:http://www.sqlite.org/omitted.html来修改表

我正在考虑对其他列进行一些硬编码的递归更改,但是如果没有tsql和存储过程,我很难实现它,我该如何实现呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-07 16:39:44

当您执行UPDATE命令时,您将临时获得重复的ID。

要避免这种情况,请分两步更改in。

首先,选择一个大于最大ID的数字,并将其添加到所有ID中:

代码语言:javascript
复制
UPDATE TODO SET id = id + 1000000000

然后,从所有ID中减去1:

代码语言:javascript
复制
UPDATE TODO SET id = id - (1000000000 - 1)
票数 6
EN

Stack Overflow用户

发布于 2012-11-07 15:51:11

如果不首先更改表(通过删除主键属性),就不可能更新SQLite主键。

这是SQLFiddle Demo

票数 2
EN

Stack Overflow用户

发布于 2012-11-07 15:47:41

不确定Sqlite是否有禁用主键的功能。如果是,您可以禁用它,更新表,然后重新启用主键。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13265244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档