我想为列指定值 以这种方式
1,2,3,4,5,... 1000
如果我插入列
的值1,2,3,4,5,6,7
使用自动增量
现在我要删除2,3
下一次插入应该是2,3,
而不是8
2,3
完成后,我的插入应以8 ...
答案 0 :(得分:2)
AUTO_INCREMENT
表现得像这样;它不会填补已删除数据产生的空白,只是将新条目附加到"底部"当前的枚举。这是因为,在绝大多数情况下,重用唯一标识符是一种非常糟糕的做法。
除了更改表的设计以使标识符字段不具有AUTO_INCREMENT
属性,然后实现自己的逻辑以外,您几乎无能为力。插入后填补空白。查找最小的未使用标识符并将其分配给即将进行的插入非常简单:
SET @GapId = (
SELECT MIN(T1.ID + 1)
FROM MyTable T1
LEFT JOIN MyTable T2 ON T2.ID = T1.ID + 1
WHERE T2.ID IS NULL
);
INSERT INTO MyTable(ID,...) VALUES (@GapId,...);