Pourquoi la transaction ne fait pas de rollback ?
Hello,
Toujours avec mes promos (qui font que je vous pose quelques questions ces derniers temps^^), j'ai créé une procédure stockée qui crée une copie d'une promo.
Je vous passe tout le corps de la procédure car elle fait plus de 200 lignes mais voici ce qui importe pour la question que j'ai :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
CREATE PROCEDURE [S_PROMO].[UP_COPY_PROMO]
@tous les paramètres qui vont bien
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRAN
--Tout le corps de la procédure
IF @@ERROR <> 0
BEGIN
DECLARE @MSG AS VARCHAR(1000) = 'ERROR DURING COPYING THE PROMO';
RAISERROR(@MSG,16,1)
ROLLBACK TRAN
END
ELSE
COMMIT TRAN
END
GO |
On vient de faire un test et à un moment, une contrainte de type check n'a pas été respectée. Je m'attendais donc à ce qu'un rollback de toute la transaction soit effectuée. Seulement cela n'a pas été le cas. Des lignes ont été insérées dans certaines tables et n'ont pas été supprimées. J'en déduis donc que le rollback ne s'est pas effectué et je ne comprends pas pourquoi.
Dans le corps de la procédure, il n'y a que des select, insert, update. Aucun appel à d'autres procédures stockées.