SQL Server触发器影响列中的1行

时间:2014-11-22 02:33:16

标签: sql sql-server triggers

我是触发器的新手,我遇到了一些问题。我正在尝试创建一个触发器,将表sales中新插入的值90添加到表internetServices中salesYTD中的id 100的总销售额中。它似乎正确地进行了计算,但它只是假设影响id为100的行。可悲的是它似乎每个salesYTD都在改变它。

CREATE TRIGGER InsertTrigger
ON Sales
AFTER INSERT As
    UPDATE InternetServices
    SET SalesYTD = (SELECT SUM(Amount)
                    FROM Sales
                    WHERE ServiceID = 100)
    WHERE ServiceID = 100;
GO

Print 'Master table Before Insert'
Select * From InternetServices
Print 'After Insert'
INSERT INTO Sales VALUES( 11, '2012-11-14' , 90 , 100 );
Select * From InternetServices

不确定我是否提供了足够的信息这是我第一次发布SQL问题。请不要让我知道,我会更新它。谢谢。

2 个答案:

答案 0 :(得分:1)

您需要使用INSERTED table。所以它将插入的金额(在表销售中)添加到现有金额中 column SalesYTD的{​​{1}}。

table InternetServices

答案 1 :(得分:0)

where需要update子句,而不仅仅是子查询:

UPDATE InternetServices
    SET SalesYTD = (SELECT SUM(Amount)
                    FROM Sales
                    WHERE ServiceID = 100
                   )
    WHERE ServiceID = 100;