У меня есть проект таблицы: Trigger обновить другую таблицу с суммы столбца исходной таблицы
и Milestone таблицу:
Всякий раз, когда любая вставка, обновление, удаление производится в Milestone таблица, таблица проекта должна быть обновлена.
Столбец ProjectCost в таблице Проекта представляет собой сумму его вех. В таблице Milestone есть столбец 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
Как должно быть триггером?
EDIT
Я редактировал курок как:
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
@Engineer. , , '' Использовать Организацию перед 'create trigger'. SQL Server позволяет создавать триггер в текущей базе данных. Это документировано (https://msdn.microsoft.com/en-us/library/ms189799.aspx). Я не уверен, в чем причина, возможно, для предотвращения неоднозначности в теле о том, какая база данных используется для ссылки на не полностью квалифицированные объекты. –
Разве это игнорирует удаление? – xr280xr