Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

TSQL :transaction Try-Catch dans le déclencheur

D'après mon expérience, toute erreur détectée dans un try catch dans un déclencheur annulera l'intégralité de la transaction; vous pourrez peut-être utiliser une transaction de sauvegarde. Je pense que vous devez regarder ce qui se passe dans "Some more sql" et déterminer si vous pouvez écrire des instructions case/if autour pour arrêter l'erreur.

Ce que vous pouvez faire en fonction de ce que vous faites est d'utiliser une save transaction et capturez ça dans le catch

Dans votre code, quelque chose comme ça

SAVE TRANSACTION BeforeUpdate;
BEGIN TRY
        --Some More SQL
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION BeforeUpdate;
        return
END CATCH