제대로 범위를 지정 거래에서 저장 프로시저
-
01-07-2019 - |
문제
한 두 가지가 아닌 저장 프로시저를 관리하는 자신의 트랜잭션
CREATE PROCEDURE theProc
AS
BEGIN
BEGIN TRANSACTION
-- do some stuff
IF @ThereIsAProblem
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION
END
면 나는 이 proc 에서 기존의 트랜잭션,proc 할 수 있는 롤백 외부 트랜잭션이 있습니다.
BEGIN TRANSACTION
EXEC theProc
COMMIT TRANSACTION
어떻게 적절 범위 내에서 거래 저장 프로시저는 저장되지 않으로 롤백 외부 거래?
해결책
구문을 이렇게 아마도까지 다양하여 데이터베이스입니다.하지만 Transact-SQL 에서 당신은 무엇을 할지 확인@@TRANCOUNT 당신이에서 트랜잭션이 있습니다.그런 다음 경우를 만들고 싶을 저장점,그리고 끝에할 수 있습니다 그냥 통과 끝의 기능(믿음 commit,rollback 일 이상)또는 다른 롤백하의 저장점.
Microsoft's documentation 저장점 니다.
에 대한 지원이 저장점은 매우 광범위하게,하지만 제가 생각하는 메커니즘을(있다고 가정하면 중 하나입)발견을 위해 현재 트랜잭션에 따라 다를 것입니다.
다른 팁
사용@@trancount 을 보면 당신은 이미 트랜잭션에 입력할 때
제휴하지 않습니다 StackOverflow