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?
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.
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
Curtir tópico
+ 0
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'
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
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'
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
Clique aqui para fazer login e interagir na Comunidade :)