添加具有相同ID的项目。自动将旧ID增加1

时间:2013-10-15 15:22:43

标签: mysql

所以我的数据库的主键只是一个名为'id'的列。当我向数据库中添加一个新项目时,我希望它按特定顺序排列,而不必进入数据库并将其后的每个值更改为+1以前的任何值。

示例:

   ID
 | 1 | item1 |
 | 2 | item2 |
 | 3 | item3 |
 | 4 | item4 |

说我要添加项目inbetween item2和item3。为此,我需要将第3项的ID更改为4,将item4的ID更改为5,但目前我必须进入数据库并自动执行。

当我插入新项目时,如何让它自动增加?

1 个答案:

答案 0 :(得分:1)

您应该考虑保留ID不变,并添加辅助列以进行排序,例如sort_order。需要为每个插入更改父表和相关表中的所有ID,这不是一个好主意,尤其是。如果你没有正确制作的外键。

如果你这样做,应该很容易实现:

-- Untested
START TRANSACTION;
UPDATE foo SET sort_order=sort_order+1 WHERE sort_order>=4;
INSERT INTO foo (name, sort_order) VALUES ('item', 4);
COMMIT;