[SQL] SQL 서버 - 어떻게 저장 프로 시저가 완료 될 때까지 테이블을 잠급니다
SQLSQL 서버 - 어떻게 저장 프로 시저가 완료 될 때까지 테이블을 잠급니다
나는이 작업을 수행 할 수 :
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를 표시합니다. (I는 반환 표 A에 절차 A를 변경할 수 아니에요).
해결법
-
==============================
1.이 대답은 나 자신을 필요 다윗 Moye에서 제공하는 링크,이 결정하고 같은 질문 다른 사람에게 유용 할 거라고 생각에서 :
이 대답은 나 자신을 필요 다윗 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
-
==============================
2.
BEGIN TRANSACTION select top 1 * from table1 with (tablock, holdlock) -- You do lots of things here COMMIT
이것은 현재의 "거래"이 끝날 때까지 '테이블 잠금'을 개최한다.
-
==============================
3.거래의 TABLOCKX 잠금 힌트를 사용합니다. 고정에 대한 자세한 내용은이 문서를 참조하십시오.
거래의 TABLOCKX 잠금 힌트를 사용합니다. 고정에 대한 자세한 내용은이 문서를 참조하십시오.
from https://stackoverflow.com/questions/3662766/sql-server-how-to-lock-a-table-until-a-stored-procedure-finishes by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] GROUP BY / SQL의 집계 함수 혼란 (0) | 2020.03.26 |
---|---|
[SQL] MySQL의 : 절 제한의 FROM에서 하위 쿼리와보기 (0) | 2020.03.26 |
[SQL] SQL에서 증가 날짜의 결과 세트를 생성 (0) | 2020.03.26 |
[SQL] 어떻게 동적 SQL 문에서 테이블 변수를 사용하는 방법? (0) | 2020.03.26 |
[SQL] 복잡한 조건 스파크 SQL 창 기능 (0) | 2020.03.25 |