将autoincrement id字段增加一个

时间:2012-04-06 12:34:56

标签: mysql sql database auto-increment increment

我有一个MySQL 5服务器和一个表,在id字段(主键)上有一个自动增量。现在我想在两者之间添加一条记录,所以我必须将所有其他ID增加一个。这就是我试过的:

UPDATE myTable SET id=id+1 WHERE id >= 53

这不起作用,因为例如id = 52的记录已经存在。我怎样才能做到这一点?如果他从最后一个条目开始并进行更新,我认为应该可行。但是如何?

4 个答案:

答案 0 :(得分:12)

我认为没有充分的理由。只有问题。在运行下面的语句之前,请检查是否定义了FOREIGN个键,引用此id。它们是否设为ON UPDATE CASCADE?此外,您是否有与此表相关的任何触发器?

但首先要考虑, 为什么 你(想你)需要这个。是否会用于订购桌子?在这种情况下,正如@Mark指出的那样,您应该使用单独的列来指定所需的订单。


但是,如果您认为自己真的想要这个,请使用:

UPDATE myTable 
SET id = id + 1 
WHERE id >= 53
ORDER BY id DESC  ;

答案 1 :(得分:4)

快速而肮脏,分两步完成。

  • 将id增加到比其他所有人更高的数字
  • 将所有ID减少到您想要的数字

喜欢那个

UPDATE myTable SET id=id+10000 WHERE id >= 53
UPDATE myTable SET id=id-9999 WHERE id >= 53

答案 2 :(得分:0)

我觉得这样的事情有效:

UPDATE myTable SET id=id+1 WHERE id >= (select id from myTable order by id DESC)

答案 3 :(得分:0)

我遇到了同样的问题。并且还尝试了OP和@Romain Hoog的查询。但没有成功。

最后在excel中导出整个表的数据并在excel中完成(不是一个接一个,而是使用使得它非常快的技巧)。

然后备份原始表重新创建的新表和从更新的excel导入的数据。