【发布时间】:2013-11-04 14:17:53
【问题描述】:
我有一个表,其中 id 是一个自动递增的主键列。它包含超过 10,00 行。
我需要获取所有已删除的主键。 喜欢
1 xcgh fct
2 xxml fcy
5 ccvb fcc
6 tylu cvn
9 vvbh cvv
我应该得到的结果是
3
4
7
8
目前我计算所有记录,然后在另一个表中插入(1 到计数),然后我从该表中选择记录表中存在的 id。但是这种方法效率很低。我可以使用任何直接查询吗? 请为mysql指定。
【问题讨论】:
-
为什么要这样做?一般来说,最好只留下自动增量序列中的空白。
-
是 SQL Server 还是 MySQL?请不要标记模棱两可
-
我想这样做是因为我的客户不了解主键,他说如果我的总产品小于 1000,为什么 productno 大于这个。报告部分在 asp 中,我无法更改。这是mysql。
-
所以向您的客户解释 PK。不要乱用 AUTO_INCREMENTing 键!
-
自动增量不会回滚,因此如果事务因任何原因回滚,则序列中会出现间隙。如果文档需要序列号,自动递增是一个不好的选择。