sourcecode

SQL Server - 저장 프로시저가 완료될 때까지 테이블을 잠그는 방법

copyscript 2023. 7. 8. 11:07
반응형

SQL Server - 저장 프로시저가 완료될 때까지 테이블을 잠그는 방법

이 작업을 수행합니다.

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 서버 보고 서비스 보고서에서 프로시저 A를 호출한 다음 프로시저가 완료된 후에만 테이블 a를 표시하기를 원합니다(프로시저 A를 변경하여 테이블 a를 반환할 수 없습니다).

데이비드 모예가 제공한 링크에서 직접 이 답변이 필요했으며, 이를 결정하고 동일한 질문을 가진 다른 사람들에게 유용할 수 있다고 생각했습니다.

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

이렇게 하면 현재 "거래"가 끝날 때까지 '테이블 잠금'이 유지됩니다.

트랜잭션에 TABLOCKX 잠금 힌트를 사용합니다.잠금에 대한 자세한 내용은 이 문서를 참조하십시오.

언급URL : https://stackoverflow.com/questions/3662766/sql-server-how-to-lock-a-table-until-a-stored-procedure-finishes

반응형