SQL Server 2008 R2的創建觸發器調用存儲過程,如果條件滿足
我已經不具有任何參數的存儲過程,它只需更新基於靜態的標準表。
我想調用這個存儲過程,如果插入是在我的dbo.item表完成的,但只有當插入到dbo.item.item列中的數據與「F-」
如果開始在dbo.item.item上插入不以'F-'開始我不想調用存儲過程。
在此先感謝。
SQL Server 2008 R2的創建觸發器調用存儲過程,如果條件滿足
我已經不具有任何參數的存儲過程,它只需更新基於靜態的標準表。
我想調用這個存儲過程,如果插入是在我的dbo.item表完成的,但只有當插入到dbo.item.item列中的數據與「F-」
如果開始在dbo.item.item上插入不以'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
我能夠通過使用你的建議Vagalla得到我想要的結果。謝謝。 – Justin 2015-03-25 19:22:38
這是我使用的觸發器。你是否看到寫作過程中出現任何性能問題?
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
那麼你的問題是什麼?你試過什麼了? – Alexander 2015-03-25 00:08:50
警告詞:觸發器將在每個語句中被調用**一次** - 因此,如果您有一個「插入」,從中插入20行。一個'SELECT',你得到一次觸發器 - 在'Inserted'僞表中有20行。另外:觸發器應該非常精簡,平均和快速 - **不會在觸發器的上下文中進行廣泛處理!這會殺死你的系統性能。所以**在一個觸發器中一定要避免**遊標! – 2015-03-25 06:07:30