SQL Server自动增量包括值之间

时间:2013-11-26 14:16:45

标签: sql sql-server primary-key auto-increment

我需要PK的自动增量,这样如果表的主键是1, 2, 3, 4, 5, 6,那么下一个键应该是7然后是8,依此类推但是如果它们的键是1, 2, 3, 6那么下一个键应该是4然后是5然后是7,依此类推。

如果无法像这样设置自动增量,那么至少有一种方法可以使用SQL查询生成数字4,以防密钥为1,2,3,6。

我需要这个的原因是因为很多数据会在一分钟内存储到我的数据库中,并且它将继续从中间删除。因此ID很快就会达到100万......而且中间会丢失很多数字,我真的很想避免。

2 个答案:

答案 0 :(得分:4)

否 - AutoIncrement 故意旨在使ID 唯一存在不顺序的风险。

我甚至会避免使用触发器或某些东西“打包”丢失的数字 - 你冒着两个进程试图插入相同数字的风险,通过插入你的(推测)聚集索引的中间等来解决性能问题。

如果您担心耗尽值,请使用bigint - 它可以存储9万亿亿个值 - 即使您每天删除数百万条记录,也会超过您能够消耗的价值。< / p>

答案 1 :(得分:1)

正如所有评论员所说,你不应该担心这一点。 一个好的SQL数据库系统可以解决这个问题。

但是, 如果您真的想这样做,请使用以下链接:Find the smallest unused number in SQL Server

并将其信息与插入触发器结合起来