Bonjour,
J'ai créé un TRIGGER qui fonctionne presque mais je ne comprend pas pourquoi il ne fait pas tout ce que je lui demande
l'objet de ce TRIGGER et d'enregistrer dans une table log les changements qui se produisent:
le trigger est mis sur la table XXX, il ajoute bien dans SYNC_ACTION une ligne par action effectuée sur la table,
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
17
18
19
20
21
22
23
24
25
26 AS DECLARE VARIABLE OP_VAL CHAR(1); DECLARE VARIABLE KEY_VAL INTEGER; BEGIN IF (DELETING) THEN BEGIN OP_VAL = 'D'; KEY_VAL = OLD.ID; END ELSE BEGIN IF (UPDATING) THEN OP_VAL = 'U'; ELSE OP_VAL = 'I'; KEY_VAL = NEW.ID; END DELETE FROM SYNC_ACTION WHERE CLE_TABLE = :KEY_VAL AND TABLE_ID IN ( SELECT ID FROM SYNC_TABLE WHERE NOM_TABLE = 'XXXX' ); INSERT INTO SYNC_ACTION (ID, DATE_SYNC, TABLE_ID, TYPE_ACTION, CLE_TABLE) SELECT GEN_ID(SYNC_ACTION_GENID, 1), 'NOW', t.ID, :OP_VAL, :KEY_VAL FROM SYNC_TABLE t WHERE NOM_TABLE = 'XXXX'; END
la partie qui ne fonctionne pas c'est le DELETE qui précède, en effet je voudrais ne conserver que le dernier événement pour un enregistrement donné, or aucune ligne n'est supprimée...
si je tape la requête directement ça fonctionne, mais dans le TRIGGER elle semble ne pas avoir d'effet
Une idée ?
Partager