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 :
A chaque changement de FKStatut dans LigneCommande, une nouvelle ligne se créé dans HistoStatut avec les 3 informations ci dessus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 HistoriqueStatut.FKLigneCommande = LigneCommande .PKLigneCommande HistoriqueStatut.FKStatut = LigneCommande.FKStatut getdate()
Or je n'arrive pas à développer mon trigger.
Voici pour le moment mon code :
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.
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 -----------------------------------------------
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
Partager