반응형
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
반응형
'sourcecode' 카테고리의 다른 글
Mongoose findOneAndUpdate 및 uversert에서 오류 및 영향을 받는 문서를 반환하지 않습니다. (0) | 2023.07.08 |
---|---|
ASP.NET에서 기본 페이지를 설정하는 방법은 무엇입니까? (0) | 2023.07.08 |
현재 지점에서 커밋할 사항이 없는지 어떻게 확인합니까? (0) | 2023.07.08 |
SQL Server 2005의 교착 상태 진단 (0) | 2023.07.08 |
프로필을 spring.profiles.include로 포함하면 include 대신 재정의되는 것 같습니다. (0) | 2023.07.08 |