MS SQL 2012中每个INSERT上的SEQUENCE编号

时间:2017-06-10 15:27:38

标签: sql sql-server

我处于多个用户通过Web服务从应用程序向数据库插入值的情况下,使用存储过程进行验证并插入记录。

要求是为每个条目创建唯一编号,但严格仅限于SEQUENCE。我添加了Identity列,但它错过了一些数字,例如25,26,27,29,34 ......

我们的要求是严格生成下一个号码,就像我们用于发票号码/订单号码/收据号码等1,2,3,4,5 ...

我在下面查看了关于序列号的链接,但不确定它是否确实解决了我的问题。有人可以帮忙。

Sequence Numbers

1 个答案:

答案 0 :(得分:1)

如果你绝对,肯定不能有差距,那么你需要使用触发器和你自己的逻辑。这会给插入带来很多开销,但这是唯一的保证。

基本上,保护数据的数据库部分会阻碍您执行所需操作。如果事务使用序列号(或标识)并且稍后回滚,那么生成的数字会发生什么?嗯,这是出现差距的一种方式。

当然,你必须弄清楚在这种情况下该怎么做。我只想找一个identity专栏,并努力教育用户可能存在差距。毕竟,如果您不希望输出存在差距,则row_number()可用于重新分配数字。