如何在触发器更新时对多行求和?

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

我在表[CART]的更新上编写了一个触发器,以计数并将值插入到其他表[HEADERS]的列[SUM]中。它有效,但仅适用于[CART].[NUMBER] = [HEADERS].[NUMBER]的1行。 [NUMBER]中的[CART]列不是唯一的,我想对[CART]相同的[NUMBER]中的所有值进行计数。这表示具有相同编号的每一行的[AMOUNT]*[PRICE],将其添加并插入列[HEADERS].[SUM]

这是我得到的:

CREATE TRIGGER [dbo].[sum] ON [dbo].[CART] AFTER UPDATE AS
BEGIN 
    DECLARE @RESULT DECIMAL
    DECLARE @AMOUNT FLOAT
    DECLARE @PRICE FLOAT
    DECLARE @NUMBER FLOAT
    SET NOCOUNT ON;
    IF UPDATE([NUMBER]) or UPDATE([AMOUNT]) or UPDATE([STATUS])
    BEGIN 
        SELECT @AMOUNT=[AMOUNT],@PRICE=[PRICE],@NUMBER=[NUMBER] FROM inserted 
        IF @NUMBER is not NULL
            BEGIN 
                SELECT @RESULT=@AMOUNT * @PRICE 
                UPDATE HEADERS SET SUM=@RESULT WHERE NUMBER=@NUMBER
            END
    END 
GO

我不太擅长SQL,因此无法找到适合此任务的正确语法。你能帮我吗?

sql sql-server
1个回答
1
投票

您的触发器代码无法处理多行更新时的情况。

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