gpt4 book ai didi

sql-server - 原子更新声明?

转载 作者:行者123 更新时间:2023-12-03 23:22:32 31 4
gpt4 key购买 nike

在许多情况下,我需要从SQL Server中的数字序列获取唯一标识符。然后,我得到的是一个包含数字系列名称,最小值,最大值和当前值的表。

Series        Min        Max        Current
-------------------------------------------
Testseries 1 999 23


现在,我将使用 UPDATE ... OUTPUT语句安全地递增并输出当前值。所有其他方法(例如: UPDATE current和 SELECT势必迟早会引起竞争状况)。

现在我发现有以下语法:

DECLARE @newId INT
UPDATE Numberseries
SET
@newId = Current += 1
WHERE
Series = '...'


因为 Series是主键,所以在任何时候我只更新一行就可以了。

我的问题是:这还会像 UPDATE ... OUTPUT语句一样是原子操作,这样两个客户端在同时调用中不会获得相同的值吗?

最佳答案

您不应该使用表,因为UPDATE实际上不是原子的(至少在某些DBS上是如此)!如果INSERT使用了值并且对该值具有UNIQUE约束,则可以避免使用它。您将必须在冲突后重试。

真正的解决方案是使用SEQUENCE-这就是它们的用途。

关于sql-server - 原子更新声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39447448/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com