Espero que le sea útil esta entrada.
Debidos a los avances tecnológicos y la alta concurrencia de datos en los sistemas en ocasiones nos vemos obligados hacer consultas entre diferentes base de datos para mitigar riesgo de duplicidad de data y así mantener la persistencia e integridad de la información. Existe una función (Conocida asi en postgresql 8.X), actualmente se le conoce por extensión que permite efectuar diferentes comandos remotos entres diferentes base de datos.

Procedimientos para poder usar dblink en PostgreSql 9.1
1)Hacer la instalación de las extensiones:
# apt-get install postgresql-contrib-9.1

2)Nos autenticamos en el PostgreSql
# su - postgres
$ psql

— Debe aparecer

psql (9.1.9)
Digite «help» para obtener ayuda.

postgres=#

3)Activar la función en la base de datos, debes tomar en cuenta algo importante cuales son tus necesidades porque hay dos forma de activar la extensión con fines diferente:

Activar la extensión para todas las base de datos que se van a crear a partir de ahora, tienes que tomar en cuenta que si tienes base de datos creadas no tendrán efecto:
postgres=#\c template1

— Debe aparecer

Ahora está conectado a la base de datos «template1» con el usuario «postgres».

template1=# CREATE EXTENSION dblink;

Activar la extensión para una sola base de datos en el cual necesito aplicar la función:
postgres=#\c demo

— Debe aparecer

Ahora está conectado a la base de datos «demo» con el usuario «postgres».

demo=# CREATE EXTENSION dblink;

Si toda ha salido bien ya tenemos activado la extensión, ahora vamos a hacer unas pruebas, tomando en cuenta que tengo una base de dato diferente y deseo hacer el CRUD:
— CASO INSERT
demo=# SELECT dblink_exec('dbname=ws_db hostaddr=XXX.XXX.XXX.XXX user=reg_user password=reg_pass', 'INSERT INTO usuario_pregunta_secreta(id, usuario_id, pregunta_id, respuesta, created_at) VALUES (default, 1, 1, ''prueba'', ''2013-12-12 12:00:00'')');

select SELECT dblink_connect('myconn', 'dbname=ws_db hostaddr=XXX.XXX.XXX.XXX user=reg_user password=reg_pass');
SELECT dblink_send_query ('myconn', 'INSERT INTO usuario_pregunta(id, usuario_id, pregunta_id, respuesta, created_at) VALUES (default, 1, 1, ''444444'', ''2013-12-12 12:00:00'')');
SELECT dblink_disconnect('myconn');

— CASO SELECT

SELECT dblink_connect('myconn', 'dbname=ws_db hostaddr=XXX.XXX.XXX.XXX user=reg_user password=reg_pass');
SELECT * FROM dblink('myconn','SELECT nombres, apellidos, cedula FROM usuario') AS t(a text, b text, c text);
SELECT dblink_disconnect('myconn');

— CASO DELETE

SELECT dblink_connect('myconn', 'dbname=ws_db hostaddr=XXX.XXX.XXX.XXX user=reg_user password=reg_pass');
select dblink_exec('myconn', 'DELETE FROM usuario_pregunta')
SELECT dblink_disconnect('myconn');

— CASO UPDATE

SELECT dblink_connect('myconn', 'dbname=ws_db hostaddr=XXX.XXX.XXX.XXX user=reg_user password=reg_pass');
select dblink_exec('myconn', 'UPDATE usuario_pregunta SET respuesta='' PRUEBA DE LA MUERTE'' WHERE id=1 ')
SELECT dblink_disconnect('myconn');