我有一个触发器的问题,它应该这样做:(在northwind上) after insert触发器,它计算Order Details Table中的价格总和,但它位于Orders Table中一个名为OrderTotal的新属性中
我试着这样做,但它不工作
CREATE TRIGGER TotalCalc
ON dbo.OrderDetails
AFTER INSERT
AS declare @Price float , @Quan int , @Dis float , @Total float
BEGIN
SELECT Orders.OrderId From Orders
Select @Price = OrderDetails.UnitPrice,
@Quan = OrderDetails.Quantity,
@Dis = OrderDetails.Discount,
@Total = Orders.OrderTotal
FROM OrderDetails INNER JOIN
Orders ON OrderDetails.OrderID = Orders.OrderId
SET @Total = Sum(@Price * @Quan) - @Dis;
Insert into Orders.OrderTotal values (@Total)
END
GO谁能告诉我它是怎么工作的。
发布于 2016-06-24 09:59:04
正如您可能猜到的那样,它不工作。触发器不应返回任何select (第一个select)。触发器假定使用虚拟表inserted和deleted。
最后,Insert into Orders.OrderTotal values (@Total)没有任何意义。它会创建一个不包含customerid、employeeid等任何细节的新orders行。
尝试使用OrderDetails中的orderid和inserted中的UPDATE orders.orderTotal对inserted中的线条求和。
https://stackoverflow.com/questions/38004357
复制相似问题