独自のトランザクションを管理するストアドプロシージャがあるとします。
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
ストアドプロシージャが外部トランザクションをロールバックしないように、ストアドプロシージャ内でトランザクションを適切にスコープするにはどうすればよいですか?