我有一个MySQL 5服务器和一个表,在id字段(主键)上有一个自动增量。现在我想在两者之间添加一条记录,所以我必须将所有其他ID增加一个。这就是我试过的:
UPDATE myTable SET id=id+1 WHERE id >= 53
这不起作用,因为例如id = 52的记录已经存在。我怎样才能做到这一点?如果他从最后一个条目开始并进行更新,我认为应该可行。但是如何?
答案 0 :(得分:12)
我认为没有充分的理由。只有问题。在运行下面的语句之前,请检查是否定义了FOREIGN
个键,引用此id
。它们是否设为ON UPDATE CASCADE
?此外,您是否有与此表相关的任何触发器?
但首先要考虑, 为什么 你(想你)需要这个。是否会用于订购桌子?在这种情况下,正如@Mark指出的那样,您应该使用单独的列来指定所需的订单。
但是,如果您认为自己真的想要这个,请使用:
UPDATE myTable
SET id = id + 1
WHERE id >= 53
ORDER BY id DESC ;
答案 1 :(得分:4)
快速而肮脏,分两步完成。
喜欢那个
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导入的数据。