gpt4 book ai didi

SQL Server 2005 和 SELECT 和 UPDATE 锁定

转载 作者:行者123 更新时间:2023-12-04 06:51:56 25 4
gpt4 key购买 nike

我想执行更新然后选择结果。在选择发生之前,我不希望任何东西能够更新我正在更新的行。我该怎么做?

我的目标是增加一行的值并返回该增加的值。到目前为止,我发现我最终遇到了一个问题,即在两个查询几乎同时发生的情况下,更新(递增)后跟一个选择似乎返回相同的数字。所以我猜想更新>更新>选择>选择之类的事情正在发生。

我错过了将其标记为 SQL Server 2005。我实际上在使用 Server 2000。所以输出子句不起作用(不在那个版本中)。

BEGIN TRANSACTION
UPDATE Table SET Last=(Last+1) WHERE ID=someid;
SELECT * FROM Table WHERE ID=someid;
COMMIT TRANSACTION

最佳答案

BEGIN TRAN
UPDATE ...
SELECT...
COMMIT

即使在已提交读的默认事务隔离级别也应该这样做。

您也可以使用 OUTPUT子句在更新后直接取回行。这个例子
UPDATE <YourTable>
SET ...
OUTPUT INSERTED.*
WHERE ...

关于SQL Server 2005 和 SELECT 和 UPDATE 锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2993558/

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