触发更新另一个 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;
外部查询中的 join
和 where
中的相关性执行您想要的过滤。
我有一个项目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;
外部查询中的 join
和 where
中的相关性执行您想要的过滤。