OVH Cloud OVH Cloud

TRIGGER

2 réponses
Avatar
Gerald
Bonjour,
il y a longtemps que je n'ai pas créé de trigger et je ne me souviens plus
de grand chose.

Je dois poser un trigger sur la table A et modifier la valeur du champs
B.Colonne1 WHERE B.Colonne2=A.Colonne2
SQL me génère des erreurs, je n'arrive pas à trouver où ca pêche.


CREATE TRIGGER MAJ_Corr_Art
AFTER UPDATE
ON
TABLE_A
AS

UPDATE TABLE_B
SET TABLE_B.Colonne1 = TABLE_A.Colonne1
WHERE TABLE_B.Colonne2 = TABLE_A.Colonne2


Merci de m'aider

2 réponses

Avatar
Christian Robert
Au niveau de la syntaxe du trigger çà va... par contre c'est le corps de
celle-ci qui comporte un problème...

A partir du moment où on travaille sur la table sur laquelle on a déclenché
le Trigger les enregistrement supprimés sont dans la pseudo table "deleted",
les modifié "deleted" (anciennes valeurs) & "inserted" (nouvelles valeurs) ou
insérer "inserted".

La requête s'écrierait plutôt :

UPDATE TABLE_B
SET Colonne1 = TABLE_A.Colonne1
FROM inserted AS TABLE_A
WHERE TABLE_B.Colonne2 = TABLE_A.Colonne2

Attention aussi au fait que les jointures dans les UPDATE sont complexes en
terme de syntaxe... J'ai utilisé inserted, mais si c'est les anciennes
valeurs c'est deleted qu'il faut...

--
Cordialement

Christian Robert
Consultant - Formateur chez Winwise
MCT - MCDBA - MCSD
MCTS & MCITP SQL Server 2005


"Gerald" a écrit :

Bonjour,
il y a longtemps que je n'ai pas créé de trigger et je ne me souviens plus
de grand chose.

Je dois poser un trigger sur la table A et modifier la valeur du champs
B.Colonne1 WHERE B.Colonne2=A.Colonne2
SQL me génère des erreurs, je n'arrive pas à trouver où ca pêche.


CREATE TRIGGER MAJ_Corr_Art
AFTER UPDATE
ON
TABLE_A
AS

UPDATE TABLE_B
SET TABLE_B.Colonne1 = TABLE_A.Colonne1
WHERE TABLE_B.Colonne2 = TABLE_A.Colonne2


Merci de m'aider





Avatar
Gerald
Merci,
Il n'y a pas de secret, si on ne travaille pas son SQL, on l'oublie





"Christian Robert" (sansspam)> a écrit dans le
message de news:
Au niveau de la syntaxe du trigger çà va... par contre c'est le corps de
celle-ci qui comporte un problème...

A partir du moment où on travaille sur la table sur laquelle on a
déclenché
le Trigger les enregistrement supprimés sont dans la pseudo table
"deleted",
les modifié "deleted" (anciennes valeurs) & "inserted" (nouvelles valeurs)
ou
insérer "inserted".

La requête s'écrierait plutôt :

UPDATE TABLE_B
SET Colonne1 = TABLE_A.Colonne1
FROM inserted AS TABLE_A
WHERE TABLE_B.Colonne2 = TABLE_A.Colonne2

Attention aussi au fait que les jointures dans les UPDATE sont complexes
en
terme de syntaxe... J'ai utilisé inserted, mais si c'est les anciennes
valeurs c'est deleted qu'il faut...

--
Cordialement

Christian Robert
Consultant - Formateur chez Winwise
MCT - MCDBA - MCSD
MCTS & MCITP SQL Server 2005


"Gerald" a écrit :

Bonjour,
il y a longtemps que je n'ai pas créé de trigger et je ne me souviens
plus
de grand chose.

Je dois poser un trigger sur la table A et modifier la valeur du champs
B.Colonne1 WHERE B.Colonne2=A.Colonne2
SQL me génère des erreurs, je n'arrive pas à trouver où ca pêche.


CREATE TRIGGER MAJ_Corr_Art
AFTER UPDATE
ON
TABLE_A
AS

UPDATE TABLE_B
SET TABLE_B.Colonne1 = TABLE_A.Colonne1
WHERE TABLE_B.Colonne2 = TABLE_A.Colonne2


Merci de m'aider