所以我的数据库的主键只是一个名为'id'
的列。当我向数据库中添加一个新项目时,我希望它按特定顺序排列,而不必进入数据库并将其后的每个值更改为+1
以前的任何值。
示例:
ID
| 1 | item1 |
| 2 | item2 |
| 3 | item3 |
| 4 | item4 |
说我要添加项目inbetween
item2和item3。为此,我需要将第3项的ID更改为4,将item4的ID更改为5,但目前我必须进入数据库并自动执行。
当我插入新项目时,如何让它自动增加?
答案 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;