SSRS Trigger для обновления описания с дополнительной информацией - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь создать триггер, который обновит описание в 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 в конце, чтобы он только редактировал описание для расписания, которое я сейчас создаю / обновляю?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Я думаю, вам нужно присоединиться к таблице INSERTED, в которой хранятся все измененные записи

INNER JOIN INSERTED as I ON dbo.Subscriptions.Id = I.Id
0 голосов
/ 12 сентября 2018

Вместо использования предложения 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...