Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/07/2008, 09h40   #1
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 92
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 92
Points : 28
Points : 28
Envoyer un message via ICQ à Fritzoune Envoyer un message via MSN à Fritzoune
Par défaut [débutant] problème de trigger

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 :
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;
Fritzoune est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h39.


 
 
 
 
Partenaires

Hébergement Web