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:
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
5 anos atrás
5 anos atrás
8 anos atrás
8 anos atrás
9 anos atrás
9 anos atrás
9 anos atrás