北风触发

问题描述 投票:0回答:2

我的触发器有问题,应该执行以下操作:(在北风上) 在插入触发器之后计算订单详细信息表中的价格总和,但它在订单表中名为 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

谁能告诉我它是如何工作的。

mysql sql triggers
2个回答
0
投票

正如您可能猜到的那样,它不起作用。触发器不应返回任何

select
(您的第一个选择)。触发器假设使用虚拟表
inserted
deleted

最后,
Insert into Orders.OrderTotal values (@Total)
毫无意义。它创建新的
orders
行,其中没有任何详细信息,例如
customerid
employeeid
等。
尝试使用
OrderDetails
中的
orderid
UPDATE
inserted 中的
orders.orderTotal
的行总计求和。


0
投票

创建触发器总计 ON [dbo].[订单详情] 插入后 作为 开始

        declare @Price float , @Quan int , @Dis float , @Total float
            Select  @Price = UnitPrice,
                            @Quan = Quantity,
                            @Dis = Discount
                FROM inserted 
                set @Total= Sum(@Price * @Quan) - @Dis;  

                        Insert into #OrdersOrderTotal values (@Total)

结束

亲爱的,这是正确的解决方案,您只是忘记了插入的表格,如果您想检查您的答案是否正确,请插入值并检查您的答案

插入[订单详情]值(11077,11,14.00,12,0)

选择总计,总和(总计) ( 从[订单详细信息]中选择 orderid ,productid , sum(UnitPrice * Quantity - Discount) 作为总计 按订单 ID、产品 ID 分组)a 其中订单 ID=11077 并且productiD=11 按总数分组

© www.soinside.com 2019 - 2024. All rights reserved.