我处于多个用户通过Web服务从应用程序向数据库插入值的情况下,使用存储过程进行验证并插入记录。
要求是为每个条目创建唯一编号,但严格仅限于SEQUENCE。我添加了Identity列,但它错过了一些数字,例如25,26,27,29,34 ......
我们的要求是严格生成下一个号码,就像我们用于发票号码/订单号码/收据号码等1,2,3,4,5 ...
我在下面查看了关于序列号的链接,但不确定它是否确实解决了我的问题。有人可以帮忙。
答案 0 :(得分:1)
如果你绝对,肯定不能有差距,那么你需要使用触发器和你自己的逻辑。这会给插入带来很多开销,但这是唯一的保证。
基本上,保护数据的数据库部分会阻碍您执行所需操作。如果事务使用序列号(或标识)并且稍后回滚,那么生成的数字会发生什么?嗯,这是出现差距的一种方式。
当然,你必须弄清楚在这种情况下该怎么做。我只想找一个identity
专栏,并努力教育用户可能存在差距。毕竟,如果您不希望输出存在差距,则row_number()
可用于重新分配数字。