From: | Miguel Rodríguez Penabad <penabad(at)gmail(dot)com> |
---|---|
To: | "fulanito detal" <fulanito000(at)hotmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: ayuda triguer |
Date: | 2007-09-26 16:02:18 |
Message-ID: | 95335e4e0709260902m3070c9f4ye00b35c4bff27b0a@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El 26/09/07, fulanito detal <fulanito000(at)hotmail(dot)com> escribió:
> buenas, mecesito hacer un triguer que cuando ingreso un registro en una base
> de datos , me guarde el registro en una tabla de otra base de datos en otro
> servidor
> Esto se puede hacer? como?
> si no se puede, me largan alguna idea
Mira el paquete dblink. Hay algunos ejemplos en la lista, quizás haciendo
una búsqueda encuentres ejemplos de lo que buscas.
De hecho, reusando una función que había utilizado para un asunto de
dblink_exec,
te paso un ejemplo:
--La tabla:
CREATE TABLE t1(a1 int, a2 text);
-- La función y el trigger, para insertar en la BD "copia"
CREATE OR REPLACE FUNCTION insertar()
RETURNS "trigger" AS
$BODY$
begin
PERFORM dblink_exec('hostaddr=127.0.0.1 port=5432 dbname=copia
user=postgres password=XXXX',
'insert into t1(a1,a2) values ('
||new.a1
||','''
||new.a2
||''')' );
return null; -- se ignora en el trigger de tipo "after"
end
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
CREATE TRIGGER t_inserta
AFTER INSERT
ON t1
FOR EACH ROW
EXECUTE PROCEDURE insertar();
Y ya estaría.
Si lo quieres hacer para TODAS las tablas, considera usar replicación
con Slony I o similares.
Saludos
--
Miguel Rodríguez Penabad
From | Date | Subject | |
---|---|---|---|
Next Message | Gabriel Hermes Colina Zambra | 2007-09-26 16:37:00 | Re: Ayuda con Function |
Previous Message | Miguel Rodríguez Penabad | 2007-09-26 15:49:48 | Re: Ayuda con Function |