SQLServer 스토리지 프로세스 중첩 트랜잭션 처리
3798 단어 sqlserver
SQLServer 스토리지 프로세스 중첩 트랜잭션 처리
어떤 저장 프로세스가 단독으로 호출될 수도 있고, 다른 저장 프로세스가 끼워 넣을 수도 있으며, 끼워 넣는 업무가 발생할 수도 있다.
다음은 저장 프로세스 플러그인 호출을 해결하는 유니버설 코드입니다. 저장 프로세스가 다른 저장 프로세스에 호출될 수 있는지 확인할 수 없는 상황에서 모든 저장 프로세스는 이 템플릿에 따라 구축하는 것을 권장합니다.
create proc proc_example as
begin
-- ,
declare @exist_trancount int
select @exist_trancount = @@trancount
if @exist_trancount > 0
--
save transaction tran_proc else
--
begin transaction tran_proc /* ········· */
if @@error<>0
goto error if @exist_trancount = 0
--
commit tran tran_proc return 1 error: --
rollback transaction tran_proc return -1
end
설명:
1) 현재 저장 프로세스의 실례 실행이 플러그인 사무 호출인지 먼저 판단한다.끼워 넣으면 저장 프로세스가 판단한 @@TRANCOUNT가 0보다 커야 합니다. 이 때 새로운 사무를 열지 않고 사무 저장점을 만듭니다.중첩된 트랜잭션이 아닌 경우 @@TRANCOUNT는 0이어야 합니다. 이때 새 트랜잭션을 시작하면 됩니다.
2) 그 다음에 저장 프로세스 자체의 업무 처리 코드입니다. 매 단계의 처리 코드는 @@@ERROR를 판단해야 합니다. <>0이면 error 코드를 실행합니다.
3) 마지막으로 올바른 집행을 처리하고 플러그인 호출이 아니면 사무를 제출한다.오류가 발생하면, 업무를 스크롤하거나 저장점을 스크롤합니다.
물론 저장 프로세스를 호출하는 곳은 저장 프로세스의 반환 값을 판단하여 상응하는 처리를 해야 한다
잘못된 점이 있으면 벽돌을 두드리는 것을 환영합니다.다른 방법이 있으면 공유해 주세요, 감사합니다!O(∩_∩)O
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
우분투에 SQL 서버 설치Microsoft SQL Server는 오늘날 업계에서 가장 눈에 띄는 데이터베이스 중 하나입니다. 이번 포스팅에서는 우분투에 설치하는 방법을 알려드리겠습니다. sudo 권한이 있는 계정 1단계: 터미널 열기 단축키...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.