Bonjour,
j'essaie de faire un trigger qui se déclanche sur le champs commentaire d'une table. si celui-ci est modifié, alors je veux parcourir tous les enregistrements avec le même id(ce n'est pas la clé primaire) de cette table pour les concatener dans une cellule d'une autre table (avec le même id correspondant).

Mon problème se situe au niveau du parcours de tous les enregistrement de la table courante (elle est 'mutating'; donc j'ai utilisé le pragma autonomous_transaction pour echapper à ce souci).
Mais comme il est la, le trigger fonctionne bizzarement il faut que je modifie plusieurs champs de la 1ere table pour que le trigger mette bien à jour la 2eme table. je ne comprends pas pourquoi. c'es comme s'il se déclanchait avec une opération de retard.

Pouvez-vous m'éclairez ? Merci.


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
create or replace trigger t_UpdateWRCFComment AFTER update OR INSERT of comments on WRCF
For EACH ROW
DECLARE
             pragma autonomous_transaction;
begin
UPDATE wr set wr.cf_notes= (SELECT
SUBSTR(MAX(REPLACE(
SYS_CONNECT_BY_PATH(cf_id||':'||comments, '/')
,'',' ')),2) Concatenated_String
FROM (
select WRCF.*,
row_number() OVER (Partition by wr_id order by wr_id) ROW#
from WRCF  where wr_id = :NEW.wr_id)
START WITH ROW#=1
CONNECT BY PRIOR wr_id=wr_id AND PRIOR row# = row# -1
GROUP BY wr_id) where wr_id = :NEW.wr_id;
commit;
end t_UpdateWRCFComment;