Salut !
J'ai un petit problème, je souhaite traduire ce trigger :
qui marche très bien sur une base de données oracle mais qui ne passe plus sur SQL server
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 CREATE OR REPLACE TRIGGER updateNumCmde ON PROPOSITIONCOMMERCIALE AFTER UPDATE(numbcpc) FOR EACH ROW DECLARE v_numBC PROPOSITIONCOMMERCIALE.numbcpc%TYPE; v_numDA PROPOSITIONCOMMERCIALE.numDA%TYPE; BEGIN --on écrase le numéro de commande sil existait v_numBC := :new.numbcpc ; v_numDA := :new.numDA; UPDATE DEMANDEACHAT SET numbcda=v_numBC WHERE numDA=v_numDA END;
après des recherches sur Internet, j'ai cru comprendre que la syntaxe n'était pas la même... Mais je n'arrive pas à trouver ce que je cherche
Merci pour votre future aide
----
Je pense que je m'approche :
Updated n'est pas reconnu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ALTER TRIGGER [dbo].[TriggerMajPC_DA] on [dbo].[PROPOSITIONCOMMERCIALE] for UPDATE AS UPDATE DEMANDEACHAT SET numbcda=(select numbcpc from UPDATED) WHERE numDA=(select numDA from UPDATED)(j'ai tenté le calquage sur INSERTED )
----
Pour les autres
Dans un trigger, il y a deux tables virtuelles : inserted et deleted
pour un update, les deux existent, inserted contenant les nouvelles valeurs, et deleted, les anciennes.
Source : Internet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ALTER TRIGGER [dbo].[TriggerMajPC_DA] on [dbo].[PROPOSITIONCOMMERCIALE] for UPDATE AS UPDATE DEMANDEACHAT SET numbcda=(select numbcpc from INSERTED) WHERE numDA=(select numDA from INSERTED)
Partager