Trigger entre deux tables
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:
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:
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