触发更新另一个 table 与原始 table 列的总和

Trigger to update another table with sum of a column of original table

我有一个项目table:

和一个里程碑table:

每当对里程碑 table 进行任何插入、更新、删除时,项目 table 都需要更新。

Project table 中的 ProjectCost 列是其里程碑的总和。里程碑 table 具有 ProjectId 列,该列表明里程碑属于哪个项目。

每次对里程碑 table 进行任何更改时,产品 table 中的 ProductCost 都应更新。

触发器有问题:

CREATE TRIGGER UpdateProject 
   ON  [Organisation].[dbo].[Milestone] 
   AFTER INSERT,DELETE,UPDATE
AS 
BEGIN
    UPDATE T1
    SET T1.ProjectCost = (SELECT SUM(MilestoneCost) FROM [Organisation].[dbo].[Milestone] T2 
                            WHERE T2.ProjectId=)
    FROM [Organisation].[dbo].[Project] T1
    INNER JOIN Inserted i ON T1.ProjectId=i.ProjectId
    WHERE T1.ProjectId=

END
GO

触发器应该如何?

编辑

我将触发器编辑为:

USE Organisation
GO

CREATE TRIGGER [UpdateProject]
   ON  [Organisation].[dbo].[Milestone] 
   AFTER INSERT,DELETE,UPDATE
AS 
BEGIN
    UPDATE T1
    SET T1.ProjectCost = (SELECT SUM(MilestoneCost) 
                            FROM [Organisation].[dbo].[Milestone] T2 
                            WHERE T2.ProjectId=i.ProjectId)
    FROM [Organisation].[dbo].[Project] T1
    INNER JOIN Inserted i ON T1.ProjectId=i.ProjectId
END
GO

你很接近:

BEGIN
    UPDATE T1
        SET T1.ProjectCost = (SELECT SUM(MilestoneCost)
                              FROM [Organisation].[dbo].[Milestone] T2 
                              WHERE T2.ProjectId = i.ProjectId
                             )
    FROM [Organisation].[dbo].[Project] T1 INNER JOIN
         Inserted i
         ON T1.ProjectId = i.ProjectId;
END;

外部查询中的 joinwhere 中的相关性执行您想要的过滤。