Sql server 调用存储过程的触发器

Sql server 调用存储过程的触发器,sql-server,database,stored-procedures,triggers,ssms,Sql Server,Database,Stored Procedures,Triggers,Ssms,我有一个提取特定数据的视图。见下面的例子 现在,当LocationCode为“MYS”时,每当视图捕获新值时,我都想调用一个存储过程。可能是调用存储过程的触发器?不确定这是否有效 存储过程基于这些列(ID和ActivityDate)运行,即需要将它们作为可以从视图中的数据获取的输入传递。存储过程输出需要存储到临时表中 EXEC dbo.spLocationEvents @ID = '314AS', @ActivityDate = '20 Jan 2020 12:00 AM' 每次有人输入位置

我有一个提取特定数据的视图。见下面的例子

现在,当LocationCode为“MYS”时,每当视图捕获新值时,我都想调用一个存储过程。可能是调用存储过程的触发器?不确定这是否有效

存储过程基于这些列(ID和ActivityDate)运行,即需要将它们作为可以从视图中的数据获取的输入传递。存储过程输出需要存储到临时表中

EXEC dbo.spLocationEvents
@ID = '314AS',
@ActivityDate = '20 Jan 2020 12:00 AM'
每次有人输入位置代码“MYS”的活动时,都需要在临时表中捕获数据

CREATE TRIGGER [dbo].[ActivityEvents_IR] ON [dbo].[ActivityEvents] 
FOR INSERT 
AS 
BEGIN 
SET NOCOUNT ON 
    IF (SELECT LocationCode FROM inserted) LIKE 'MYS' 
    Begin 
        Return 
    END 
    DECLARE @ActivityDate datetime = 'SELECT ' + 'ActivityDate' + ' FROM inserted 
    WHERE LocationCode=''MYS''' 
    DECLARE @ID int = 'SELECT ' + 'id' + ' FROM inserted WHERE LocationCode=''MYS''' 
    INSERT INTO [#TempActivityEvents] 
    EXEC dbo.spLocationEvents @ID = @ID, @Date = @ActivityDate 
END 
GO

您不能在视图访问时触发,只能在对基表的插入/更新时触发。您在一个问题中要求太多。查看MS文档,了解如何构建触发器。使用插入和删除的表计算哪些行已更改,以及更改的值是什么,如果必须为每个值调用SP一次,则迭代调用SP的更改。理想情况下,您可以在不调用SP的情况下直接将insert写入temp表,这样您就可以编写一个基于集合的查询,而不必对其进行单行操作……每当视图捕获一个新值时,您所说的
是什么意思?您可能需要在视图下方的表上创建触发器。不在视图中请不要将代码示例或示例数据放入注释中-因为您无法格式化它,所以读取它非常困难。。。。取而代之的是:通过编辑你的问题来更新它,以提供额外的信息!非常感谢。