• Matéria: Informática
  • Autor: brunopcem
  • Perguntado 7 anos atrás

O que pode estar dando errado nesse trigger? SQL SERVER


CREATE TRIGGER valor_total ON Detalhe_Venda

AFTER INSERT

AS

DECLARE @vendaid INT

DECLARE @produtoid INT

DECLARE @qtd_produtos INT

DECLARE @valor FLOAT


SELECT @vendaid = venda_id, @produtoid = produto_id, @qtd_produtos = quantidadeprod

FROM INSERTED


SELECT @valor = valor

FROM Produtos

WHERE id = @produtoid


UPDATE Venda

SET valortotal = valortotal + (@valor * @qtd_produtos)

WHERE id = @vendaid

Respostas

respondido por: macaibalaura
0

Creio que o erro seja sobre acionadores no SQL Server. Tendo em mente  que INSERTED é um conjunto de linhas, não uma única linha.

CREATE TRIGGER valor_total ON Detalhe_Venda

   AFTER INSERT

AS

BEGIN

       UPDATE v  

           SET valortotal = v.valortotal + ip.valor

           FROM Venda v JOIN

                (SELECT i.venda_id,

                        SUM(p.valor * i.quantidadeprod) as valor

                 FROM Inserted i JOIN

                      Produtos p

                      ON p.id = i.produtoid

                 GROUP BY i.venda_id

                ) ip

                ON v.id = ip.venda_id

END;

Perguntas similares