Em 1 de julho de 2015 12:59, Alan Formagi <[email protected]> escreveu:

> *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
>
>
boa tarde
obrigado a todos pela resposta,
realmente o Alan matou a charada, como a trigger olhava no insert,e a
propria trigger dava o insert ficava em loop,criei um campo de controle e
funcionou.


-- 

Douglas Fabiano Specht
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a