2017-06-19 4 views
0

Lorsque j'ai essayé cela à partir de php dans SQL Server 2014 cela a fonctionné, mais maintenant avec SQL Server 2008 signale l'erreur suivante: Syntaxe incorrecte près du mot clé 'END'. Des idées pourquoi?SQL Server 2008 BEGIN TRANSACTION avec BEGIN TRY

BEGIN TRANSACTION 
    BEGIN TRY 
     INSERT ... 
     INSERT ... 
    COMMIT TRANSACTION 
    END TRY 
    BEGIN CATCH 
     ROLLBACK TRANSACTION 
    END CATCH 

Les INSERTS sont corrects. Cela fonctionne si je retire le TRY CATCH.

Merci!

Répondre

1

Vous devez déplacer Begin TRANSACTION l'intérieur du bloc Try Ci-dessous est modifié celui que vous pouvez consulter

BEGIN TRY 
BEGIN TRANSACTION 
    INSERT... 
    INSERT... 
COMMIT TRANSACTION 
END TRY 

BEGIN CATCH 
IF (@@TRANCOUNT > 0) 
BEGIN 
    ROLLBACK TRANSACTION 
    PRINT 'Error detected, all changes reversed' 
END 
END CATCH