Я пытаюсь создать триггер, который обновит описание в SSRS для отредактированной записи.
Я пытаюсь добавить информацию о расписании в столбец «Описание» на экране SSRS, где вы назначаете расписания отчету.
У меня есть следующий запрос:
CREATE TRIGGER UpdateDescription
ON [dbo].[Subscriptions]
AFTER INSERT, UPDATE
AS
UPDATE dbo.Subscriptions
SET [Description] = a.Description + ' | Schedule: ' + d.Name
FROM dbo.Subscriptions a
LEFT JOIN dbo.Catalog b
ON a.Report_OID = b.ItemID
LEFT JOIN dbo.ReportSchedule c
ON b.ItemID = c.ReportID
LEFT JOIN dbo.Schedule d
ON c.ScheduleID = d.ScheduleID
WHERE
Когда этот триггер установлен, и я редактирую отчет, он меняет описание для каждого расписания для всех отчетов .... Какой тип параметра я могу добавить в оператор WHERE в конце, чтобы он редактировал только описание расписания Я сейчас создаю / обновляю?
Вместо того, чтобы использовать предложение WHERE
, вы должны указать INNER JOIN
в таблице INSERTED. Это будет содержать только строки, которые были вставлены в таблицу:
CREATE TRIGGER UpdateDescription
ON [dbo].[Subscriptions]
AFTER INSERT, UPDATE
AS
UPDATE dbo.Subscriptions
SET [Description] = a.Description + ' | Schedule: ' + d.Name
FROM dbo.Subscriptions a
INNER JOIN inserted i ON i.SubscriptionID = a.SubscriptionID
LEFT JOIN dbo.Catalog b ON a.Report_OID = b.ItemID
LEFT JOIN dbo.ReportSchedule c ON b.ItemID = c.ReportID
LEFT JOIN dbo.Schedule d ON c.ScheduleID = d.ScheduleID;
Таблица существует только в рамках триггера INSERT или UPDATE.
Это работает, спасибо. Лучший ответ - MadBert просто потому, что он был немного быстрее ...
Я думаю, вам нужно присоединиться к таблице INSERTED, в которой хранятся все измененные записи.
INNER JOIN INSERTED as I ON dbo.Subscriptions.Id = I.Id
Привет! Кажется, у меня нет этой таблицы в моей базе данных ReportServer ... Я только что понял, что использую SSRS 2012, а не 2008 - может ли это быть причиной отсутствия этой таблицы?
Вставленная таблица - это специальная таблица, созданная и управляемая SQL Server автоматически. См. Использовать вставленную таблицу. Эта таблица создается во время выполнения триггера и может использоваться только в этом временном окне.
Работает как шарм. Большое тебе спасибо.
Привет, как уже упоминалось выше, в ответ на @MadBert я не могу найти эту таблицу.