problème de trigger update et de structure de if

Le
ThunderMusic
Bonjour, j'ai le trigger suivant pour la table Issue, sur un update. en gros
ce que je veux que ca fasse c'est ajouter 1 enregistrement dans la table
issue_history lorsqu'un champs est modifié dans la table Issue.
Présentement, j'ai 2 problème que je ne comprends pas.

Problème 1) si je ne change que la date, le champ Changes reste vide (donc
ma variable ne se rempli pas). Mais si je modifie soit que le title, soit le
title et la date, le résultat est correct.

Problème 2) à chaque update, il y a toujours 2 enregistrements qui
s'ajoutent: 1 avec des changements vides et l'autre avec les bons
changements (sauf dans le cas du problème 1). Je voudrait qu'il n'y ait que
celui avec les changements (pas celui qui a les changements vides). Dans les
2 enregistrements, le reste des informations est correct.

Merci de votre aide

ThunderMusic

P.S. Voici le code du trigger

ALTER Trigger dbo.Issue_Update_To_History
On dbo.Issue
For Update
As
declare @Changes nvarchar(255);
declare @NbChanges smallint;
declare @IssueID numeric(9);

set @NbChanges = 0;

if (UPDATE(Title))
begin
set @Changes = N'Title changed';
set @NbChanges = @NbChanges +1;
end

if (UPDATE(Date))
begin
if (@NbChanges > 0)
begin
set @Changes = @Changes + N', ';
end

set @Changes = @Changes + N'Date changed';
set @NbChanges = @NbChanges +1;
end

select @IssueID = ID from INSERTED;

Insert Issue_History (Issue, DT_Change, Changes, By_User) Values (@IssueID,
GetDate(), @Changes, SUSER_SNAME());


return;
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ThunderMusic
Le #11329471
Finalement, j'ai reglé mon problème 2 en ajoutant un If (@NbChanges > 0)
juste avant le insert dans la table Issue_History. la duplication des
enregistrement était du a un autre trigger qui modifie l'enregistrement sur
un update.

Alors il reste que le problème 1. Personne a une idée de ce que ca pourrait
être?!?

Merci

ThunderMusic

"ThunderMusic" news:
Bonjour, j'ai le trigger suivant pour la table Issue, sur un update. en


gros
ce que je veux que ca fasse c'est ajouter 1 enregistrement dans la table
issue_history lorsqu'un champs est modifié dans la table Issue.
Présentement, j'ai 2 problème que je ne comprends pas.

Problème 1) si je ne change que la date, le champ Changes reste vide (donc
ma variable ne se rempli pas). Mais si je modifie soit que le title, soit


le
title et la date, le résultat est correct.

Problème 2) à chaque update, il y a toujours 2 enregistrements qui
s'ajoutent: 1 avec des changements vides et l'autre avec les bons
changements (sauf dans le cas du problème 1). Je voudrait qu'il n'y ait


que
celui avec les changements (pas celui qui a les changements vides). Dans


les
2 enregistrements, le reste des informations est correct.

Merci de votre aide

ThunderMusic

P.S. Voici le code du trigger

ALTER Trigger dbo.Issue_Update_To_History
On dbo.Issue
For Update
As
declare @Changes nvarchar(255);
declare @NbChanges smallint;
declare @IssueID numeric(9);

set @NbChanges = 0;

if (UPDATE(Title))
begin
set @Changes = N'Title changed';
set @NbChanges = @NbChanges +1;
end

if (UPDATE(Date))
begin
if (@NbChanges > 0)
begin
set @Changes = @Changes + N', ';
end

set @Changes = @Changes + N'Date changed';
set @NbChanges = @NbChanges +1;
end

select @IssueID = ID from INSERTED;

Insert Issue_History (Issue, DT_Change, Changes, By_User) Values


(@IssueID,
GetDate(), @Changes, SUSER_SNAME());


return;





Publicité
Poster une réponse
Anonyme