MySQL:从前一点增加数值PK

时间:2015-11-26 12:53:55

标签: primary-key increment

我有一个带有主键的表,后续值为1,2,3,4,... 1035 我想在此序列中的某处插入一个新值,并将所有值增加到所述值以上(实际上,顺序将是相反的方向)。

显然,我使用像

这样的简单语句会出错
    UPDATE Table
    SET primary_id=primary_id+1
    WHERE primary_id > 501

因为primary_id 502增加到503,并且503已经存在。 这似乎是一个非常基本的问题,但我不记得该怎么做。 该表位于MySQL中,但我认为这不重要。

1 个答案:

答案 0 :(得分:0)

首先,对您的表进行备份,如下所示:

CREATE TABLE backup LIKE table;
INSERT INTO backup SELECT * FROM table;

然后,您可以运行以下查询:

-- remove auto_increment attribute and unique constraint
ALTER TABLE table MODIFY id INT NOT NULL, DROP PRIMARY KEY;

-- your original query
UPDATE table SET id = (id+1) WHERE id > 501;

-- re-add the primary key
ALTER TABLE table MODIFY id INT NOT NULL PRIMARY KEY AUTO_INCREMENT;

如果结果正常,请删除备份:

DROP TABLE backup;