Sha*_*ghi 3 sql-server concurrency sequence isolation-level
文档中指出:
仅当记录完全填充后才会发生重复验证。在某些情况下,这可能会导致在创建过程中将同一个编号用于多个记录,但随后会被识别为重复项
我不想在像这样的插入查询中使用该数字:
INSERT Test.Orders (OrderID, Name, Qty)
VALUES (NEXT VALUE FOR Test.CountBy1, 'Tire', 2) ;
Run Code Online (Sandbox Code Playgroud)
我想在我的网络应用程序中获取该数字并使用它来构造密文。并将加密后的代码存储在数据库中。因此,就我而言,插入时没有重复检查。
我需要知道的是,两个客户端是否有可能NEXT VALUE FOR
几乎同时调用函数并获得相同的值?或不?(我需要不要发生这种情况)
因此,就我而言,插入时没有重复检查。
如果您确实不想允许重复值,则应该对UNIQUE
要存储密文的列创建约束。您的应用程序必须进行编码,以便重试因唯一约束错误而失败的插入。
我需要知道的是,两个客户端是否有可能几乎同时调用 NEXT VALUE FOR 函数,并获得相同的值?
虽然在正常情况下不太可能在NEXT VALUE FOR
同一序列的两次单独调用中获得相同的值,但有些事情可能会导致这种情况发生:
CYCLE
选项指定的,并且已达到最大值(导致其翻转)ALTER SEQUENCE RESTART
)SELECT
NEXT VALUE FOR dbo.TestSequence,
NEXT VALUE FOR dbo.TestSequence;
Run Code Online (Sandbox Code Playgroud)
您可能还有兴趣阅读Paul White 所著的《序列表》。
归档时间: |
|
查看次数: |
2022 次 |
最近记录: |