【发布时间】:2012-04-20 01:48:48
【问题描述】:
我有一个 MySQL 5 服务器和一个表,其中 id 字段(主键)具有自动增量。现在我想在两者之间添加一条记录,因此我必须将所有其他 id 加一。这是我尝试过的:
UPDATE myTable SET id=id+1 WHERE id >= 53
这不起作用,因为例如已经存在 id = 52 的记录。我怎样才能做到这一点?如果他从最后一个条目开始并进行更新,我认为它应该可以工作。但是怎么做呢?
【问题讨论】:
-
主要的目的是为一行提供一个身份,而不是order他们。使用单独的列来指定您想要的顺序。插入后更改行的主键只会给您带来问题。
-
如果删除并重新创建自动增量字段怎么办?
-
删除并重新创建列(或尝试重新编号现有行)将不起作用,特别是如果您已经在其他地方使用了 ID 作为外键。 (它会断开与现有行的连接。)你真的应该听@MarkByers - “在插入后更改一行的主键只会给你带来问题。”另请参阅this SO 问题及其答案。
-
为什么(你认为)你需要这个?
-
逻辑上你永远不需要这个
标签: mysql sql database auto-increment increment