Trigger Firebird - Valor de campo resultado de subtração

01/06/2021

0

Boa noite galera, eu nunca usei trigger para atualizar um preencher um campo dentro do banco a não ser para o ID auto increment. Tentei criar essa triger para fazer a conta e atualizar o campo mas ela da erro. Eu já identifiquei o erro que está faltando o where no update, minha duvida é a seguinte, como passar a instrução p/ trigger que ela deve atualizar o ID q esta sendo inserido ou atualizado?

CREATE OR ALTER TRIGGER TRG_CLOSE_UP_A7_VS_CL FOR TBL_CLOSE_UP
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
  UPDATE TBL_CLOSE_UP set MES_1_VENDA_A7_VS_CL = (mes_1_venda_d_mais_cl - mes_1_venda_d_mais_a7);
end


A trigger tem que ser executada tanto no insert ou no update pois o registro pode ser novo ou sofrer atualização.

Quando eu pesquiso sobre as triggers para atualizar campo no firebird eu só acho materiais sobre campos auto increment. Se alguém puder me passar algum vídeo ou material para estudo sobre as varias formas de se criar uma trigger no firebird ficaria muito agradecido.
Paulo

Paulo

Responder

Post mais votado

02/06/2021

se estiver inserindo, você terá a tabela virtual 'new'; se estiver atualizando, terá a tabela virtual 'old' com os valores atuais e a tabela virtual 'new' com os novos valores.
para o teu caso, basta manipular a tabela virtual 'new'
CREATE OR ALTER TRIGGER TRG_CLOSE_UP_A7_VS_CL FOR TBL_CLOSE_UP
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
    new.mes_1_venda_a7_vs_cl = (new.mes_1_venda_d_mais_cl - new.mes_1_venda_d_mais_a7);
end


Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

02/06/2021

Paulo

se estiver inserindo, você terá a tabela virtual 'new'; se estiver atualizando, terá a tabela virtual 'old' com os valores atuais e a tabela virtual 'new' com os novos valores.
para o teu caso, basta manipular a tabela virtual 'new'
CREATE OR ALTER TRIGGER TRG_CLOSE_UP_A7_VS_CL FOR TBL_CLOSE_UP
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
    new.mes_1_venda_a7_vs_cl = (new.mes_1_venda_d_mais_cl - new.mes_1_venda_d_mais_a7);
end




Então fiz conforme eu entendi. E mesmo assim não consegui. acabei usando o campo com a instrução computed by, eu não conhecia e resolveu meu problema.

Muito Obrigado. ;)
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