Bom dia , estamos com o seguinte problema :

Ao fazer um “update es_movto_estoque set quantidade=100 where id=1000” , o 
retorno é : 
“Query returned successfully: 0 rows affected, 41 ms execution time.”

Nessa tabela temos as 3 trigger abaixo , se eu excluir a trigger 
“tr_bu_ret_ctrlnf” o update funciona , alguem poderia me dizer o porque ??

Obrigado 


na tabela tem as triggers :
CREATE TRIGGER tr_ad_ret_ctrlnf
  AFTER DELETE
  ON es_movto_estoque
  FOR EACH ROW
  EXECUTE PROCEDURE tf_ad_es_movto_estoque_ret_ctrlnf();

CREATE TRIGGER tr_ai_adi_ctrlnf
  AFTER INSERT OR UPDATE
  ON es_movto_estoque
  FOR EACH ROW
  EXECUTE PROCEDURE tf_ai_es_movto_estoque_adi_ctrlnf();

CREATE TRIGGER tr_bu_ret_ctrlnf
  BEFORE UPDATE
  ON es_movto_estoque
  FOR EACH ROW
  EXECUTE PROCEDURE tf_ad_es_movto_estoque_ret_ctrlnf();

As funções são :

CREATE OR REPLACE FUNCTION tf_ad_es_movto_estoque_ret_ctrlnf()
  RETURNS trigger AS
$BODY$  
BEGIN  

IF OLD.controle_nota THEN
   IF OLD.entrada_saida = 'E' THEN  
      UPDATE cd_saldo_produto SET ctrl_entrada = ctrl_entrada - old.quantidade 
, ctrl_vlr_entrada=ctrl_vlr_entrada - old.valor_controle WHERE 
id_produto=old.id_produto and id_empresa=old.id_empresa ;  
   ELSE  
      UPDATE cd_saldo_produto SET ctrl_saida = ctrl_saida - old.quantidade , 
ctrl_vlr_saida=ctrl_vlr_saida - old.valor_controle WHERE 
id_produto=old.id_produto and id_empresa=old.id_empresa ;   
   END IF;  
else
   UPDATE cd_saldo_produto SET empenhado=2 WHERE id_produto=old.id_produto and 
id_empresa=old.id_empresa ;  

END IF;   
RETURN NULL;  
END;  
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;


CREATE OR REPLACE FUNCTION tf_ai_es_movto_estoque_adi_ctrlnf()
  RETURNS trigger AS
$BODY$  
BEGIN  
IF NEW.controle_nota THEN
   IF NEW.entrada_saida = 'E' THEN  
      UPDATE cd_saldo_produto SET ctrl_entrada=ctrl_entrada + new.quantidade , 
ctrl_vlr_entrada=ctrl_vlr_entrada + new.valor_controle WHERE 
id_produto=new.id_produto and id_empresa=new.id_empresa ;  
   ELSE  
      UPDATE cd_saldo_produto SET ctrl_saida=ctrl_saida + new.quantidade , 
ctrl_vlr_saida=ctrl_vlr_saida + new.valor_controle WHERE 
id_produto=new.id_produto and id_empresa=new.id_empresa ;   
   END IF;  
END IF;   
RETURN NULL;  
END;  
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a