Salut !

J'ai un petit problème, je souhaite traduire ce trigger :

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 s’il existait
	v_numBC := :new.numbcpc ;
	v_numDA := :new.numDA;
 
	UPDATE DEMANDEACHAT SET numbcda=’v_numBC’ WHERE numDA=’v_numDA’
 
END;
qui marche très bien sur une base de données oracle mais qui ne passe plus sur SQL server


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 :

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)
Updated n'est pas reconnu (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)