Bonjour,

Je suis actuellement en train d'essayer de développer une application pour mon école.
J'aimerai créer un trigger qui après chaque update ou insert dans une table, injecte des données dans une autre table.

Voici les tables utilisées :

LigneCommande :
1 - PKLigneCommande
2 - FKStatut

HistoriqueStatut
1 - FKLigneCommande (Foreign Key de PKLigneCommande)
2 - FKStatut
3 - DateChangementStatut

Objectif: Lorsque je créé une ligne de commande, je renseigne une PKLigneCommande et un FKStatut.
Cette action renseigne une ligne dans HistoriqueStatut avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
HistoriqueStatut.FKLigneCommande = LigneCommande .PKLigneCommande
HistoriqueStatut.FKStatut = LigneCommande.FKStatut
getdate()
A chaque changement de FKStatut dans LigneCommande, une nouvelle ligne se créé dans HistoStatut avec les 3 informations ci dessus.

Or je n'arrive pas à développer mon trigger.
Voici pour le moment mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
-------------------------------------------------------
CREATE TRIGGER TEST
   ON  [dbo].[LigneCommande]
   AFTER INSERT, UPDATE
AS 
BEGIN
INSERT INTO HistoStatut (FKLigneCommande , FKStatut , DateChangementStatut)
SELECT LC.PKLigneCommande , LC.FKStatut , getdate()
FROM LigneCommande LC
END
-----------------------------------------------
Comme vous pouvez le deviner, ceci me créé à chaque fois un tas de ligne égale au nombre de ligne dans la table LigneCommande or ce n'est pas ce que je veux.

EXEMPLE :
Table LigneCommande :
1 , 1

Table HistoStatut
1 , 1 , dateA

Je change le statut de LigneCommande de 1 je le passe à 2 :
1 , 2
Table HistoStatut deviendrai :
1 , 1 , dateA
1 , 2 , dateB

Merci par avance de votre aide.

Configuration :
SQLServer 2005
Management Studio