Sql SSRS触发用附加信息更新描述

Sql SSRS触发用附加信息更新描述,sql,sql-server,triggers,ssrs-2012,Sql,Sql Server,Triggers,Ssrs 2012,我正在尝试创建一个触发器,该触发器将更新已编辑记录的SSRS描述 我正在尝试将计划信息添加到屏幕上SSRS上的“说明”列中,您可以在其中为报告分配计划 我有以下疑问: CREATE TRIGGER UpdateDescription ON [dbo].[Subscriptions] AFTER INSERT, UPDATE AS UPDATE dbo.Subscriptions SET [Description] = a.Description + ' | Schedule: ' + d.Na

我正在尝试创建一个触发器,该触发器将更新已编辑记录的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
子句,您应该
内部联接到插入的表中。这将只包含插入表中的行:

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;

我认为您需要连接到插入的表,该表保存所有修改的记录

INNER JOIN INSERTED as I ON dbo.Subscriptions.Id = I.Id

您好,我的ReportServer数据库中似乎没有此表。。。我刚刚意识到,我运行的是SSRS 2012而不是2008—这就是没有此表的原因吗?插入表是由SQL Server自动创建和管理的特殊表。请看。此表是在触发器执行时间内创建的,只能在该时间窗口中使用。工作起来很有魅力。非常感谢。您好,如上所述,在回复@MadBert时,我似乎找不到该表。该表仅存在于插入或更新触发器的范围内。谢谢。最好的答案是MadBert,因为他速度快了一点。。。