Bonjour
je desirerai faire une insertion dans la table de données distante lorsque l'objet modifié dans ma table local , n'y existe pas , sinon ( s'il existe ) je le met a jour, voila mon trigger , je ne sais pas ou ca déconne
avec
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 CREATE OR REPLACE TRIGGER trigger_codeb AFTER UPDATE OR INSERT ON SUPPORTE FOR EACH ROW DECLARE sub_id VARCHAR(30); existe INTEGER:=0; BEGIN sub_id:=trouve_id_personne(:new.id_carte); select count(*) into existe from asynchrone@exportSynchrone where codebar= :old.codebar ; if (sub_id IS NOT NULL) then if ( existe > 0) then update asynchrone@exportSynchrone set codebar= :new.codebar where codebar = :old.codebar ; else insert into asynchrone@exportSynchrone (codebar,id_personne,diffphoto) values (:new.codebar ,substr(sub_id,1,(length(sub_id)-12)) ,'N'); COMMIT; end if; end if; END ;
ma fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE OR REPLACE FUNCTION trouve_id_personne(id_c VARCHAR2) RETURN varchar2 IS id_p varchar(20); PRAGMA AUTONOMOUS_TRANSACTION; BEGIN select id_personne into id_p from porteur, supporte where porteur.id_carte=supporte.id_carte and porteur.id_carte= id_c; RETURN id_p; Exception When NO_DATA_FOUND Then RETURN NULL; END
Partager