[英]How to lock a SELECted rows in Sql Server until transaction is COMMITTED in a Stored Procedure
[英]SQL Server - How to lock a table until a stored procedure finishes
我想做这个:
create procedure A as
lock table a
-- do some stuff unrelated to a to prepare to update a
-- update a
unlock table a
return table b
这样有可能吗?
最终,我希望我的SQL Server报告服务报告调用过程A,然后在过程完成后仅显示表a。 (我无法将过程A更改为返回表a)。
我本人需要这个答案,并从David Moye提供的链接中做出了决定,并认为它可能对具有相同问题的其他人有用:
CREATE PROCEDURE ...
AS
BEGIN
BEGIN TRANSACTION
-- lock table "a" till end of transaction
SELECT ...
FROM a
WITH (TABLOCK, HOLDLOCK)
WHERE ...
-- do some other stuff (including inserting/updating table "a")
-- release lock
COMMIT TRANSACTION
END
BEGIN TRANSACTION
select top 1 *
from table1
with (tablock, holdlock)
-- You do lots of things here
COMMIT
这将保持“表锁”直到您当前的“交易”结束。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.