Executer une procédure stockée avant un trigger (débutant)
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...
Code:
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 |
Voici la procédure stockée spupdateAffaire
Code:
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 |
Enfin, voici mon trigger
Code:
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 |
Mon souci vient qu'a aucun moment, je peux mettre à jour mon tuple vu que je sors de la procédure avant....
Merci d'avance