SQL SERVEUR 2005 et Pb TRIGGER
Bonjour à tous,
Objectif : Créer un trigger qui met à 0 le champ Réserv UNIQUEMENT SUR l'enregistrement MODIFIE lorsque ce dernier est négatif.
Pourriez vous m'expliquer pourquoi ce trigger me renvoie le message ? --> Le niveau maximal d'imbrication des procedures stockées, des fonctions, des déclencheurs, ou des vues est dépassé (limite 32).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| ALTER TRIGGER [dbo].[TransfertEgalZero]
ON [dbo].[Magasin_P_Finis]
AFTER UPDATE,INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
UPDATE [Magasin_P_Finis]
set transfert=0
where transfert < 0
END |
J'ai tenté de corrigé de cette manière :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| ALTER TRIGGER [dbo].[StockReserveEgalZero]
ON [dbo].[Magasin_P_Finis]
AFTER UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @NAuto Integer
declare @Nbr Integer
select @NAuto = [Auto] from inserted
select @nbr = [réserv] from inserted
if @Nbr<0
begin
UPDATE [Magasin_P_Finis]
set [réserv]=0
where [Auto] = @NAuto
end
END |
- Est ce bon ?
- Est ce de cette manière que l'on récupère la valeur des champs de la ligne modifiée ?
- Dans la ligne : select @nbr = [réserv] from inserted
J'aurai préféré utiliser 'Updated' puisque c'est un trigger after Update mais j'ai un message d'erreur en retour.
Cela semble fonctionner quand même. pourquoi ?
Par avance, merci de toutes vos réponses.
Cyrille.