0
我有一个项目表的总和来更新另一个表: 触发与原表的列
的又一个里程碑表:
每当任何插入,更新,删除就是里程碑制作表,项目表需要更新。
项目表中的ProjectCost列是其里程碑的总和。里程碑表具有ProjectId列,告诉哪个项目是里程碑所属的。
每次对里程碑表进行任何更改时,都应更新产品表中的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
我收到一个错误:无法在'Organisation.dbo.Milestone'上创建触发器,因为目标不在当前数据库中。 – Engineer
@工程师。 。 。在创建触发器之前使用组织。 SQL Server只允许你在当前数据库中创建一个触发器。这是记录(https://msdn.microsoft.com/en-us/library/ms189799.aspx)。我不确定是什么原因,也许是为了防止在用于引用非完全限定对象的数据库的正文中存在歧义。 –
这不会忽略删除吗? – xr280xr