gpt4 book ai didi

sql - 此 SQL 语句对于并发访问安全吗?

转载 作者:行者123 更新时间:2023-12-04 22:28:26 24 4
gpt4 key购买 nike

下面的 SQL 语句对于并发访问是否“安全”? A 会在什么时候被锁定?如果它就在 INSERT 之前,第一个 @count 是否有可能是错误的?

BEGIN TRAN;
SELECT @count = count(1) from A
DELETE FROM A where x=z
SELECT @newCount = count(1) from A
SELECT @newCount - @count
COMMIT TRAN;

最佳答案

BEGIN TRAN;
DECLARE @RC INT
EXEC @RC = sp_getapplock @Resource='ArchiveLock', @LockMode='Exclusive', @LockOwner='Transaction', @LockTimeout=15000
SELECT @count = count(1) from A
DELETE FROM A where x=z
SELECT @newCount = count(1) from A
SELECT @newCount - @count
COMMIT TRAN;

试试这个。我最近用它来处理一组由多个进程并行调用的 Delet 语句。 sp_getapplock 创建一个锁,直到事务被提交,这使得其他进程等待。

希望这对您有所帮助!

关于sql - 此 SQL 语句对于并发访问安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31784246/

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