Ajuda com Trigger que soma/subtrai SQL
Olá grupo,
estou com uma tabela SQL que tem 3 campos :
gostaria de um exemplo de como seria uma Trigger que mostrasse o resultado da soma das colunas: (Quantidade + Quantidade_Fiscal ) na coluna (Quantidade_Total )
Lembrando que os valores de algumas das colunas podem ser nulos, nesse caso o campo (Quantidade_Total ) só exibiria o resultado da coluna com valor
estou com uma tabela SQL que tem 3 campos :
Quantidade varchar(7), Quantidade_Fiscal varchar(7), Quantidade_Total varchar(7),
gostaria de um exemplo de como seria uma Trigger que mostrasse o resultado da soma das colunas: (Quantidade + Quantidade_Fiscal ) na coluna (Quantidade_Total )
Lembrando que os valores de algumas das colunas podem ser nulos, nesse caso o campo (Quantidade_Total ) só exibiria o resultado da coluna com valor
Wictor
Curtidas 0
Melhor post
Hélio Devmedia
08/03/2019
Olá Wicktor,
o prioblema da triguer é que você precisa saber quando ela será executada (insert, update ou delete) para utilizar as palavras chaves, OLD ou NEW.
Vou assumir que seja no insert por exemplo, e que as colunas não são varchar como você colocou e sim numeric:
Caso você realmente tenha colunas de quantidade como varchar, você terá muita dor de cabeça, sugiro que troque responsavelmente o tipo da coluna.
Um forte abraço e fique com Deus.
o prioblema da triguer é que você precisa saber quando ela será executada (insert, update ou delete) para utilizar as palavras chaves, OLD ou NEW.
Vou assumir que seja no insert por exemplo, e que as colunas não são varchar como você colocou e sim numeric:
CREATE OR ALTER trigger new_teste_bi0 for new_teste active before insert position 0 AS begin new.quantidade_total = new.quantidade+new.quantidade_fiscal; end
Caso você realmente tenha colunas de quantidade como varchar, você terá muita dor de cabeça, sugiro que troque responsavelmente o tipo da coluna.
Um forte abraço e fique com Deus.
GOSTEI 2
Mais Respostas
Wictor
08/03/2019
Olá Wicktor,
o prioblema da triguer é que você precisa saber quando ela será executada (insert, update ou delete) para utilizar as palavras chaves, OLD ou NEW.
Vou assumir que seja no insert por exemplo, e que as colunas não são varchar como você colocou e sim numeric:
Caso você realmente tenha colunas de quantidade como varchar, você terá muita dor de cabeça, sugiro que troque responsavelmente o tipo da coluna.
Um forte abraço e fique com Deus.
o prioblema da triguer é que você precisa saber quando ela será executada (insert, update ou delete) para utilizar as palavras chaves, OLD ou NEW.
Vou assumir que seja no insert por exemplo, e que as colunas não são varchar como você colocou e sim numeric:
CREATE OR ALTER trigger new_teste_bi0 for new_teste active before insert position 0 AS begin new.quantidade_total = new.quantidade+new.quantidade_fiscal; end
Caso você realmente tenha colunas de quantidade como varchar, você terá muita dor de cabeça, sugiro que troque responsavelmente o tipo da coluna.
Um forte abraço e fique com Deus.
Amigo vou alterar a tabela .. mas eu uso o insert ou update ? eu quero que quando se alterar a (quantidade) e/ou a (quantidade_fiscal) a (quantidade_total) atualize automaticamente
GOSTEI 0
Alex Lekao
08/03/2019
Sugiro colocar o campo quantidade total como campo caculado.
Altere o tipo de campo para ter o valor default como zero, dessa forma vc evitar um calculo com valor nulo.
Altere o tipo de campo para ter o valor default como zero, dessa forma vc evitar um calculo com valor nulo.
GOSTEI 0
Alex Lekao
08/03/2019
Sugiro colocar o campo quantidade total como campo caculado.
Altere o tipo de campo para ter o valor default como zero, dessa forma vc evitar um calculo com valor nulo.
Altere o tipo de campo para ter o valor default como zero, dessa forma vc evitar um calculo com valor nulo.
Da uma olhada aqui que deve ter ajudar.
https://docs.microsoft.com/pt-br/sql/relational-databases/tables/specify-computed-columns-in-a-table?view=sql-server-2017
Especificamente isso.
ALTER TABLE SUA_TABELA ADD QUANTIDADE_TOTAL AS (QUANTIDADE + QUANTIDADE_FISCAL);
Espero ter ajudado.
Atenciosamente,
GOSTEI 0