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
