TRIGGER qui fonctionne à moitié
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:
Code:
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 |
le trigger est mis sur la table XXX, il ajoute bien dans SYNC_ACTION une ligne par action effectuée sur la table,
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 ?