Bonjour
Voici donc mon problème (encore) avec triggers
J'ai donc à peut près compris le principe du trigger, mais j'ai un souci.
Je souhaite toujours savoir si un tuple existe pour le mettre à jour, sinon je renvoi une valeur de retour à l'utilisateur.
Mon souci vient que la procédure stockée n'est pas exécuté, et le champ, existant ou pas n'est pas mi à jour, j'ai donc toujours mon message d'erreurs.
Voici mes bouts de code, avec le déroulement pas à pas...
Voici la procédure stockée spupdateAffaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 --Je veux mettre ici un tuple qui existe avec la procédure stockée spupdateAffaire, aucun souci normalement DECLARE @return_value int EXEC @return_value = [dbo].[spUpdateAffaire] @id = 2, @name = N'6565', @comments = N'4564654', @dateCreation = N'10/10/2010' SELECT 'Return Value' = @return_value GO
Enfin, voici mon trigger
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE PROCEDURE spUpdateAffaire @id int, @name varchar(50), @comments varchar(max), @dateCreation datetime AS BEGIN --La procédure stockée arrive sur la premiere ligne, et la je vais directement sur le trigger sans executer la procédure stockée, ce qui n'est bien sur pas le cas que je veux faire... UPDATE AFFAIRE SET AffaireName=@name, AffaireComments=@comments, AffaireDateCreation=@dateCreation WHERE AffaireId=@id END
Mon souci vient qu'a aucun moment, je peux mettre à jour mon tuple vu que je sors de la procédure avant....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE TRIGGER [dbo].[Test_Exist] ON [dbo].[AFFAIRE] INSTEAD OF UPDATE--J'ai essayé Instead Of, For et Before.... AS BEGIN IF (COLUMNS_UPDATED() & 14 ) > 0 --La c'est si les 3 champs sont modifiés RAISERROR (N'SpupdateAffaire', 10, 1, 15000, 0); ROLLBACK TRANSACTION END
Merci d'avance
Partager