*Boa tarde Douglas!*
Pelo o que eu entendo essa estrutura vai ficar em loop.
Toda vez que você inserir um registro a trigger tentará inserir outros,
que por consequência irão disparar a mesma trigger, criando uma "pilha".
Sendo que é justamente isso que o postgres está reclamando quando te pede
para incrementar a configuração max_stack_depth (
http://www.postgresql.org/docs/8.3/static/runtime-config-resource.html).
Uma solução é você adicionar um campo na tabela que identifique quando
o registro é inserido pela trigger e quando é inserido pelo programa, e a
partir disso fazer um tratamento dentro da função da trigger.
Assim que eu tiver uns minutos eu vou tentar simular o caso na minha
máquina, e se eu conseguir eu te mando um exemplo da solução.
*Atenciosamente.*
*Alan Formagi*
*(47) 92034013 - Vivo*
2015-07-01 11:43 GMT-03:00 Douglas Fabiano Specht <[email protected]>
:
>
> Pessoal
> preciso gerar uma trigger que quando tiver um insert ele duplique mais x
> vezes conforme o max de uma outra tabela, acho que esta em loop infinito,
> pois me da um erro: ERROR: stack depth limit exceeded
> HINT: Increase the configuration parameter "max_stack_depth" (currently
> 2048kB), after ensuring the platform's stack depth limit is adequate.
>
> estou apanhando..alguem poderia me ajudar?
> postgres 9.4
>
>
> CREATE OR REPLACE FUNCTION dah.wdetcad() RETURNS TRIGGER AS $body$
> declare
> i integer;
>
> BEGIN
> for i in 1..(select max(codempresa) from configura WHERE codhotel >1)
> loop
> INSERT INTO detcad
> select i, new.codgrupo, new.codfuncresp ;
> end loop;
>
> RETURN NEW();
> END;
> $body$
> LANGUAGE plpgsql;
>
> --
>
> Douglas Fabiano Specht
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral