On Wed, Jul 1, 2015 at 11:43 AM, Douglas Fabiano Specht <
[email protected]> wrote:

>
> 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?
>

Sim, mas precisamos de mais detalhes. Principalmente a definição da
trigger, não só da função. Mais detalhes sobre a intenção também ajudaria
para recomendações.

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;
>

Seu loop é completamente denecessário:

    INSERT INTO detcad
    SELECT i, NEW.codgrupo, NEW.codfuncresp
    FROM generate_series(1, (SELECT max(codempresa) FROM configura WHERE
codhotel > 1)) i;



>
> RETURN NEW();
>

    RETURN NEW;

Atenciosamente,
-- 
Matheus de Oliveira
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a