Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

faire un trigger avec deux table???est ce possible??

1 réponse
Avatar
bany
Salut à tous,

voila, je viens de créer mon premier trigger(et j en suis fier!!! meme si
c'est <null> je sais!)
en revanche, j ai voulu en creer un second et la, bcp moin de chance je n y
arrive pas!
c'ets surement simple, mais la je vois pas!


donc, ceci est le trigger qui fonctionne,
les 3 champs MontantNetligneCde,CoeffRemise et PrixCommande
sont ds la meme table :T_Ligne_Commande...

la question est: je veux refaire un calcul similaire, pour la meme table,
mais
faisant appel au 'PrixUnitaire' se trouvant ds une autre table???

merci d avance, et bonne nuit ou journee a tous!

moi je vois meme plus l ecran!!!

Jean jacques


le trigger test:

CREATE TRIGGER TRG_Montant_Net
ON [dbo].[T_Ligne_Commande]
FOR INSERT, UPDATE
AS
update dbo.T_Ligne_Commande
set MontantNetligneCde=
case
WHEN (CoeffRemise is NULL) and (PrixCommande is null)
THEN Null
WHEN (CoeffRemise is NULL) and (PrixCommande is not null)
THEN (PrixCommande * 1.196)
WHEN (CoeffRemise is not null) and (PrixCommande is not null)
THEN (PrixCommande * (1- CoeffRemise)* 1.196)
ELSE NULL
END

1 réponse

Avatar
Nicolas LETULLIER
Bonjour,

hmmm... c'est bien possible que ton trigger fonctionne, par contre, il met à
jour TOUTES les lignes de ta table, non pas uniquement les lignes modifiées.
Pour répondre à ton problème (d'après mon degré de compréhension), je te
conseillerais l'utilisation d'un UPDATE FROM, à la fois sur la "table"
INSERTED (les lignes réellement insérées/modifiées), et sur la table des
prix

Exemple :

CREATE TRIGGER TRG_Montant_Net ON [dbo].[T_Ligne_Commande]
FOR INSERT, UPDATE
AS
UPDATE dbo.T_Ligne_Commande
SET MontantNetligneCde CASE
WHEN (CoeffRemise is NULL) and (PrixCommande is null)
THEN Null
WHEN (CoeffRemise is NULL) and (PrixCommande is not null)
THEN (PrixCommande * 1.196)
WHEN (CoeffRemise is not null) and (PrixCommande is not null)
THEN (PrixCommande * (1- CoeffRemise)* 1.196)
ELSE
NULL
END * TableDesPrix.PrixUnitaire (Exemple)
FROM dbo.T_Ligne_Commande
INNER JOIN Inserted ON (dbo.T_Ligne_Commande.ClePrimaire Inserted.ClePrimaire)
LEFT OUTER JOIN TableDesPrix ON (Inserted.CleDuPrix TableDesPrix.CleDuPrix)

Nicolas


"bany" a écrit dans le message de
news:3fda5075$0$385$
Salut à tous,

voila, je viens de créer mon premier trigger(et j en suis fier!!! meme si
c'est <null> je sais!)
en revanche, j ai voulu en creer un second et la, bcp moin de chance je n


y
arrive pas!
c'ets surement simple, mais la je vois pas!


donc, ceci est le trigger qui fonctionne,
les 3 champs MontantNetligneCde,CoeffRemise et PrixCommande
sont ds la meme table :T_Ligne_Commande...

la question est: je veux refaire un calcul similaire, pour la meme table,
mais
faisant appel au 'PrixUnitaire' se trouvant ds une autre table???

merci d avance, et bonne nuit ou journee a tous!

moi je vois meme plus l ecran!!!

Jean jacques


le trigger test:

CREATE TRIGGER TRG_Montant_Net
ON [dbo].[T_Ligne_Commande]
FOR INSERT, UPDATE
AS
update dbo.T_Ligne_Commande
set MontantNetligneCde > case
WHEN (CoeffRemise is NULL) and (PrixCommande is null)
THEN Null
WHEN (CoeffRemise is NULL) and (PrixCommande is not null)
THEN (PrixCommande * 1.196)
WHEN (CoeffRemise is not null) and (PrixCommande is not null)
THEN (PrixCommande * (1- CoeffRemise)* 1.196)
ELSE NULL
END