ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Erro numa trigger Postgres?

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Fev 07, 2017 10:02 am    Assunto: Erro numa trigger Postgres? Responder com Citação

O erro
Código:
---------------------------
Debugger Exception Notification
---------------------------
ERROR: stack depth limit exceeded.
Increase the configuration parameter "max_stack_depth" (currently 2048kB), after ensuring the platform's stack depth limit is adequate.'.
---------------------------
Break   Continue   Help   
---------------------------



A trigger que montei
Código:
CREATE OR REPLACE FUNCTION public.tg_atualizar_estoque_produto()
  RETURNS trigger AS
$BODY$
BEGIN
  IF (TG_OP = 'INSERT') THEN       
     UPDATE produto
       SET qtd_unidade = NEW.qtd_atual
     WHERE id = NEW.id_produto
       AND codigo_barra = NEW.codigo_barra;    
 ELSEIF (TG_OP = 'UPDATE') THEN
  UPDATE produto
       SET qtd_unidade = OLD.qtd_atual
     WHERE id = OLD.id_produto
      AND codigo_barra = OLD.codigo_barra;
 END IF;
 
   RETURN NULL;
END;


O que causa este erro?

Preciso atualizar um campo da tabela produto quando atualizar na tabela grade.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Fev 07, 2017 4:15 pm    Assunto: Responder com Citação

Achei uma solução neste site
https://www.depesz.com/2012/02/01/waiting-for-9-2-trigger-depth/
Incluindo este comando no inicio
Código:
 IF pg_trigger_depth() <> 1 THEN
        RETURN NEW;
  END IF;



Código:
CREATE OR REPLACE FUNCTION public.tg_atualizar_estoque_produto()
  RETURNS trigger AS
$BODY$
BEGIN

  IF pg_trigger_depth() <> 1 THEN
        RETURN NEW;
  END IF;
        
     UPDATE produto
       SET qtd_unidade = NEW.qtd_atual
     WHERE id = NEW.id_produto
       AND codigo_barra = NEW.codigo_barra;
   RETURN NEW;     
 
END;

$BODY$
  LANGUAGE plpgsql

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB