Bonjour à tous,
après plusieurs tentatives et des recherches sur mon ami google je reste sur un échec ! je me tourne alors vers vous pour m'aider.
j'ai deux tables avec plusieurs champs mais je ne cite que ceux qui m'intéresse :
sb_data_44 avec comme identifiant rowid(serial) et un champ id_tblcommerce (integer)
tbl_commerce_test avec un champ identifiant id_commerce(serial) et un champ rowid_tbldata44
mon objectif est que chaque table reçoit l'identifiant de l'autre après une insertion (le tout en gérant éventuellement des accès simultanés)
Hors je n'arrive pas à recevoir l'id ( id_commerce) de la table tbl_commerce_test dans la table sb_data_44 (sur le champ id_tblcommerce).
tbl_commerce_test reçoit bien lui l'identifiant de sb_data_44.
je soupçonne mon update en fin de fonction, je l'ai placé ailleurs mais rien ...
voici ma fonction
et mon trigger :
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
27
28
29
30
31
32 CREATE OR REPLACE FUNCTION base_sig.fct_synchro() RETURNS trigger AS $BODY$ DECLARE idc integer; DECLARE rid_dyn integer; BEGIN IF (TG_OP = 'DELETE') THEN DELETE FROM sch_t1_commerce.tbl_commerce_test WHERE rowid_tbldata44=OLD.rowid; IF NOT FOUND THEN RETURN NULL; END IF; RETURN OLD; ELSIF (TG_OP = 'INSERT') THEN INSERT INTO sch_t1_commerce.tbl_commerce_test (rowid_tbldata44) VALUES (rid_dyn) ; RETURN NEW; END IF; RETURN NULL; SELECT tbl_commerce_test.id_commerce into idc FROM sch_t1_commerce.tbl_commerce_test, base_sig.sb_data_44 WHERE tbl_commerce_test.rowid_tbldata44=rid_dyn; UPDATE base_sig.sb_data_44 SET id_tblcommerce = idc WHERE sb_data_44.rowid=rid_dyn; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION base_sig.fct_synchro() OWNER TO postgres;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE TRIGGER tg_synchro AFTER INSERT OR UPDATE OR DELETE ON base_sig.sb_data_44 FOR EACH ROW EXECUTE PROCEDURE base_sig.fct_synchro(); ALTER TABLE base_sig.sb_data_44;
Merci pour vos conseils
Partager