Tentando Fazer uma Trigger no Firebird dar certo.

30/09/2022

0

Tenho essa Trigger abaixo, estou tentando fazer com que quando o usuário inserir um orçamento se tenha acréscimo em um item ou no rodapé ative a Trigger.
Só que quando executo da um erro.

Dynamic SQL Error.
SQL error code = -842.
Scale must be between zero and precision.
SQL Code: -842
IB Error Number: 335544569


SET TERM ^ ;

CREATE TRIGGER ORCAMENTO_VERBA_BI FOR ORCAMENTO
ACTIVE BEFORE 
  INSERT
POSITION 1
AS
DECLARE VARIABLE V_TEXTO BLOB;
DECLARE VARIABLE S_ACRES DECIMAL(18, 6);
BEGIN
/* Trigger body ATIVO ANTES INSERIR */
  IF ((NEW.ACRESCIMO IS NOT NULL) OR (NEW.ACRESCIMO_ITENS IS NOT NULL)) THEN
  BEGIN
	 S_ACRES = NEW.ACRESCIMO + NEW.ACRESCIMO_ITENS;
	 V_TEXTO = NEW.OBS||''Valor de Verba''|| S_ACRES;
	 NEW.VALOR_FINAL  = NEW.VALOR_FINAL + NEW.ACRESCIMO + NEW.ACRESCIMO_ITENS;
	 NEW.ACRESCIMO  = 0;
	 NEW.ACRESCIMO_ITENS = 0;
	 NEW.OBS = V_TEXTO;
  END
END^

SET TERM ; ^

Explicando a Trigger:
Quando as condições forem verdadeira quero que:
No campo OBS coloque o valor contido nele mais um texto e o somatório ACRESCIMO e ACRESCIMO_ITENS,
no campo VALOR_FINAL vai ficar o valor do VALOR_FINAL mais o somatório ACRESCIMO e ACRESCIMO_ITENS
Nos campos ACRESCIMO e ACRESCIMO_ITENS zerar.

Não sei dizer por que ela não funciona (Nunca fiz uma antes...) Queria saber o que está errado nela e como consertar.
Eduardo Silva

Eduardo Silva

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar