2015-03-24 64 views
0

SQL Server 2008 R2的創建觸發器調用存儲過程,如果條件滿足

我已經不具有任何參數的存儲過程,它只需更新基於靜態的標準表。

我想調用這個存儲過程,如果插入是在我的dbo.item表完成的,但只有當插入到dbo.item.item列中的數據與「F-」

如果開始在dbo.item.item上插入不以'F-'開始我不想調用存儲過程。

在此先感謝。

+1

那麼你的問題是什麼?你試過什麼了? – Alexander 2015-03-25 00:08:50

+0

警告詞:觸發器將在每個語句中被調用**一次** - 因此,如果您有一個「插入」,從中插入20行。一個'SELECT',你得到一次觸發器 - 在'Inserted'僞表中有20行。另外:觸發器應該非常精簡,平均和快速 - **不會在觸發器的上下文中進行廣泛處理!這會殺死你的系統性能。所以**在一個觸發器中一定要避免**遊標! – 2015-03-25 06:07:30

回答

0

你可以試試這個。

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 
+0

我能夠通過使用你的建議Vagalla得到我想要的結果。謝謝。 – Justin 2015-03-25 19:22:38

0

這是我使用的觸發器。你是否看到寫作過程中出現任何性能問題?

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