Skip site navigation (1) Skip section navigation (2)

Re: ayuda triguer

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 (view raw or flat)
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

In response to

pgsql-es-ayuda by date

Next:From: Gabriel Hermes Colina ZambraDate: 2007-09-26 16:37:00
Subject: Re: Ayuda con Function
Previous:From: Miguel Rodríguez PenabadDate: 2007-09-26 15:49:48
Subject: Re: Ayuda con Function

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group