2015-02-26 9:29 GMT-03:00 Matheus Ferreira <[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
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral