Matheus eu consigo usar o mesmo esquema utilizando o dblink, porque essas
tabelas estão em bancos diferentes????
Segue mais ou menos que estou tentando fazer mesmo.
create or replace function insert_processo() returns trigger as
$$
begin
select * from dblink_exec
('dbname=igobal_bk
hostaddr=172.16.42.13
user=postgres
password=04474180
port=5432',
'INSERT INTO matheus
VALUES((NEW).*)');
return new;
end;
$$ language 'plpgsql';
create trigger insert_processo_tri before insert on matheus2
for each row execute procedure insert_processo();
De: pgbr-geral [mailto:[email protected]] Em nome de
Matheus Ferreira
Enviada em: quinta-feira, 26 de fevereiro de 2015 09:55
Para: 'Comunidade PostgreSQL Brasileira'
Assunto: [pgbr-geral] RES: Função de inserção
Matheus eu consigo usar o mesmo esquema utilizando o dblink, porque essas
tabelas estão em bancos diferentes.
De: pgbr-geral [mailto:[email protected]] Em nome de
Matheus de Oliveira
Enviada em: quinta-feira, 26 de fevereiro de 2015 09:49
Para: Comunidade PostgreSQL Brasileira
Assunto: Re: [pgbr-geral] Função de inserção
2015-02-26 9:29 GMT-03:00 Matheus Ferreira <[email protected]
<mailto:[email protected]> >:
Bom Dia pessoal
Estou tentando realizar uma função disparada por uma trigger, essa função deve
inserir os mesmo valores da última inserção realizada de uma tabela para outra
tabela.
Sendo o último insert realizado na tabela processo2 para tabela processo.
--------------------------------------------------------
CREATE TABLE processo2
(
idprocesso integer NOT NULL,
nrprocesso character varying(35)
)
CREATE TABLE processo
(
idprocesso integer NOT NULL,
nrprocesso character varying(35)
)
---------------------------------------------------------------
create or replace function insert_processo() returns trigger as
$$
begin
INSERT INTO processo
select * from processo2
Dessa forma você está pegando tudo da tabela "processo2" e inserindo em
"processo", o que você precisa é usar a variável NEW dentro da função:
INSERT INTO processo(idprocesso, nrprocesso)
VALUES(NEW.idprocesso, NEW.nrprocesso);
Se houver 100% de garantia que as tabelas possuem o mesmo esquema (geralmente
não há), você pode usar o seguinte truque também:
INSERT INTO processo
VALUES((NEW).*);
create trigger insert_processo_tri before insert on processo2
for each row execute procedure insert_processo();
Nesse caso me parece que a trigger deveria ser do tipo AFTER, assim você
garante que o registro foi inserido.
Atenciosamente,
--
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres <http://www.dextra.com.br/postgres/>
_____
<http://www.avast.com/>
Este email foi escaneado pelo Avast antivírus.
www.avast.com <http://www.avast.com/>
---
Este email foi escaneado pelo Avast antivírus.
http://www.avast.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral