Salut,
J'ai une PS qui fait un certain nombre de traitements dans un bloc de transaction :
J'ai un trigger sur la table evp qui fait un RAISERROR avec une sévérité de 11.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 begin transaction; select @pos = isnull(MAX(pos), 0) + 1 from evp with(holdlock) where eve_id = @eve_id; insert into evp (eve_id, pos, pro_id, qty) values (@eve_id, @pos, @pro_id, @qty); set @new_id = SCOPE_IDENTITY(); exec p_DoMvt @fct_id, @eve_id, @pro_id, @qty, 1; commit;
Je voudrais, sans devoir mettre un test à chaque ligne succeptible de planter :
- Faire un rollback de ma transaction, puisque je suis dans une transaction et qu'elle est mal passée
- Sortir de ma procédure
Je pensais qu'une erreur non récupérée par un TRY CATCH allait produire ce comportement.
Avec une sévirité de 1, le traitement continuait comme si de rien n'était.
Avec une sévérité de 11, la traitement s'interromp dans la procédure (ici le trigger) mais continue normalement dans le bloc appelant.
Je ne voudrais pas en arriver à l'extrême sévérité 25, qui stoppe la connexion SQL.
Je ne trouve pas de documentation qui décrive chaque niveau de sévirité 1 à 1.
Dois-je utiliser autrechose pour arriver à mes fins ?
Partager