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

좋은 웹페이지 즐겨찾기