Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 Général » trigger entre deux tables : partage d'id » 08/08/2013 14:32:15
- elsane2908
- Réponses : 2
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 suis sur un système figé où les données sont utilisées et gérées dans par un premier logiciel métier, et dont l'organisation ne permet d'être attaquée par un second logiciel ... d'où mon besoin de faire coincider les identifiants.
je soupçonne mon update en fin de fonction, je l'ai placé ailleurs mais rien ...
voici ma fonction
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 :
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
#2 Re : Général » Pg en local, connection par d'autres machines en réseau sur la base » 06/09/2011 11:18:05
exactement
#3 Re : Général » Pg en local, connection par d'autres machines en réseau sur la base » 06/09/2011 10:50:41
Merci pour vos réponses !
donc ok pour la liaison Pg <-> Access
Pour confirmation, la base en "local" (rappel, pg non installé sur un serveur) sera donc accessible par Access installé sur un autre poste en réseau ?
#4 Général » Pg en local, connection par d'autres machines en réseau sur la base » 06/09/2011 08:52:14
- elsane2908
- Réponses : 7
Bonjour,
Suis débutant, milles excuses si je pose des questions (débiles ?) dont les réponses peuvent être evidentes ...
Le contexte :
- pg installé en local sur une machine en réseau (en local car pas de serveur disponible)
- Access installé sur d'autres machines dans ce réseau pour consultation des bases pg (possible ça ?)
- Windows xp comme OS
Mes questions :
- Pourrais-je me connecter aux bases pg via Access (odbc ?)
- les utilisateurs auront-ils un accès aux bases ? pour cela, faut-il stocker les bases ailleurs que dans le répertoire Data (d'après ce que j'ai lu)
- donc, le simple fait de stocker les bases dans un autre répertoire que Date dans le réseau permettra-t-il de permettre une connection aux bases
Merci !!
Pages : 1