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
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;
et mon trigger :
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