Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wester Cardoso

[Resolvido] Ligar duas tabelas com Db Link

Recommended Posts

Olá,

 

Eu tenho uma tabelaA no bancoA e uma tabelaB no bancoB, ambos no mesmo servidor e estou usando postgres.

Eu estou tentando fazer uma trigger para inserir/deletar/atualizar na tabelaB tudo que for feito na tabelaA.

 

A trigger da tabelaA para a tabelaB eu consigo fazer, tudo que eu modifico na tabelaA é modificado na tabelaB perfeitamente, o problema é que eu preciso fazer o inverso também, quando inserir/deletar/atualizar alguma coisa na tabelaB a tabelaA também deveria ser modificada.

 

Eu fiz a mesma trigger da tabelaB para a tabelaA, mas ai começa a dar erro.

O erro que está dando é este:

 

ERROR: could not establish connection

DETAIL: FATAL: sorry, too many clients already

 

É possível fazer isso com o Db link ou existe alguma solução mais inteligente .. ?

 

CREATE OR REPLACE FUNCTION crud_bancob_tbl_b()
 RETURNS "trigger" AS
$BODY$ BEGIN
perform (select dblink_connect('dbname=bancoB hostaddr=127.0.0.1 user=postgres password=wester port=5432'));
IF (TG_OP='INSERT') THEN
perform (select dblink_exec('INSERT INTO tbl_b (nome_testeb, idade_testeb, campus_testeb) values('''||new.nome_testea||''','||new.idade_testea||','||new.campus_testea||');' ));
END IF;

IF (TG_OP='UPDATE') THEN
perform (select dblink_exec('UPDATE tbl_b SET nome_testeb='''||new.nome_testea||''', idade_testeb='||new.idade_testea||', campus_testeb='||new.campus_testea||' WHERE id_testeb='||old.id_testea||''));
END IF;

IF (TG_OP='DELETE') THEN
perform (select dblink_exec('DELETE FROM tbl_b WHERE id_testeb='||old.id_testea||''));
END IF;

RETURN NEW;
perform dblink_disconnect();
END;
$BODY$
LANGUAGE 'plpgsql';

 

EDIT: Esquece, eu tava fazendo m***** mesmo. Pode fechar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.