J'ai le problème suivant. Je dois des procédures stockées (messages de débogage double-indended):Procédures imbriquées avec transactions
CREATE PROC innerProc
AS
BEGIN
SELECT 'innerProc 1',@@TRANCOUNT
BEGIN TRAN
SELECT 'innerProc 2',@@TRANCOUNT
ROLLBACK
SELECT 'innerProc 3',@@TRANCOUNT
END
GO -----------------------------------------
CREATE PROC outerProc
AS
BEGIN
SELECT 'outerProc 1',@@TRANCOUNT
BEGIN TRAN
SELECT 'outerProc 2',@@TRANCOUNT
EXEC innerProc
SELECT 'outerProc 3',@@TRANCOUNT
ROLLBACK
SELECT 'outerProc 4',@@TRANCOUNT
END
GO -----------------------------------------
EXEC outerProc
Qu'est-ce qu'ils font?
outerProc
commence transaction (@@ TRANCOUNT = 1)- exécute
innerProc
(@@ TRANCOUNT au début de la proc = 1) innerProc
commence une autre transaction (@@ TRANCOUNT = 2) transaction
innerProc
de rollbacks (@@ TRANCOUNT = 0)- ET VOICI lE PROBLÈME: @@ TRANCOUNT au début du
innerProc
est pas égal à @@ TRANCOUNT à la fin. Qu'est-ce que je fais mal? Est-ce la bonne approche?
Avez-vous déjà résolu ce problème avec succès? Avez-vous encore besoin d'aide pour cela? – jcolebrand
Non. Cela n'a pas fonctionné avec les transactions nommées. J'ai lu certaines opinions et je pense que la transaction et les procédures ne sont pas compatibles. –