我有一个带有主键的表,后续值为1,2,3,4,... 1035 我想在此序列中的某处插入一个新值,并将所有值增加到所述值以上(实际上,顺序将是相反的方向)。
显然,我使用像
这样的简单语句会出错 UPDATE Table
SET primary_id=primary_id+1
WHERE primary_id > 501
因为primary_id 502增加到503,并且503已经存在。 这似乎是一个非常基本的问题,但我不记得该怎么做。 该表位于MySQL中,但我认为这不重要。
答案 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;