Bonjour

Dans une procedure stockée qui contient un code comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
BEGIN TRAN
 
-- blocs transact sql qui prepare le insert , mise à jour d'un champ ordonnancement
insert qui viole une contrainte NON NULL
 IF @@ERROR <> 0 GOTO LBL_ERROR 
 
COMMIT TRAN
RETURN (0)
 
LBL_ERROR:
IF @@TRANCOUNT > 1
  ROLLBACK TRANSACTION
RETURN (-1)

le problème c'est que la violation de contrainte non nul n' entraine pas
le GOTO vers le label de gestion d'erreur et j'obtiens le message
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Msg*266, Niveau*16, État*2, Procédure*Usp_Dev_Insert_Devpart, Ligne*0
Le compte des transactions après EXECUTE indique qu'il manque une instruction COMMIT ou ROLLBACK TRANSACTION. Compte précédent = 0, compte en cours = 1.
Plus généralement est il possible de mixer la gestion des contraintes intégrée et celle que je réalise dans la ps le tout avec une gestion de transaction

Merci