Stored procedures 创建触发器以在满足条件时调用存储过程

Stored procedures 创建触发器以在满足条件时调用存储过程,stored-procedures,triggers,sql-server-2008-r2,Stored Procedures,Triggers,Sql Server 2008 R2,SQL Server 2008 R2 我有一个没有任何参数的存储过程,它只是基于静态条件更新一个表 如果对dbo.item表进行了插入,但仅当插入到dbo.item.item列的数据以“F-”开头时,我才调用此存储过程 如果dbo.item.item上的insert不是以“F-”开头,我不想调用存储过程 提前谢谢。你能试试这个吗 CREATE TRIGGER TriggerName FOR YOURTABLE AFTER UPDATE AS BEGIN --Here you need to ge

SQL Server 2008 R2

我有一个没有任何参数的存储过程,它只是基于静态条件更新一个表

如果对dbo.item表进行了插入,但仅当插入到dbo.item.item列的数据以“F-”开头时,我才调用此存储过程

如果dbo.item.item上的insert不是以“F-”开头,我不想调用存储过程

提前谢谢。

你能试试这个吗

CREATE TRIGGER TriggerName FOR YOURTABLE
AFTER UPDATE
AS
BEGIN
--Here you need to get the columns list which are starts with F, from sys.columns and concate these then assign to variable. Next pass the variable 
--IF UPDATE (your Diclared variable name)
IF UPDATE (FColumnName,FColumnName1,FColumnName2,....)
BEGIN
EXEC Procedure 
END
END

这是我用的扳机。您是否看到因其编写方式而产生的任何性能问题

create trigger FixtureJob
on job
for insert
as
Begin
Declare @item varchar(30)
Select @item =(select LEFT(item,2) from inserted)
if @item = 'f-'
begin
execute ami_reports..FixtureJobDataUpdate
end 
end

那么你的问题是什么?到目前为止,您尝试了什么?警告:触发器将在每条语句中调用一次-因此,如果您有一个INSERT从例如SELECT中插入20行,则触发器将被调用一次-插入的伪表中有20行。另外:触发器应该非常精简、平均和快速-不要在触发器的上下文中进行大量处理!这会破坏你的系统性能。所以,在触发器中要尽量避免使用游标!通过使用您的建议Vagalla,我能够得到我想要的结果。谢谢