2012-02-03 604 views
1

因爲我們知道sql觸發器隱式調用。 我只是想知道是否有可能在sql服務器顯式調用觸發器?顯式調用觸發器

如果是,比如何?

謝謝

+5

不,你不能。根據定義,你不應該需要也不需要。如果它是真正的通用邏輯,請放入存儲的proc或函數 – 2012-02-03 04:25:39

+0

號爲什麼你想要? – 2012-02-03 04:33:31

+1

這樣做只是一個非常糟糕的主意,但是您可以創建一個存儲過程,以執行您想要傳遞插入和刪除列的內容。然後你可以直接調用存儲過程。 – 2012-02-03 04:41:41

回答

2

我想這取決於你明確的調用觸發器的意思。

可以導致觸發條件沒有數據更改基礎表:

create table T (ID int not null) 
go 
create trigger T_T on T after insert 
as 
    RAISERROR('Hello',10,1) WITH NOWAIT 
go 
insert into T(ID) 
select 1 where 1=0 

有了結果:

Hello 

(0 row(s) affected) 

話雖這麼說,這是一個有點作弊的,並與@Mitch小麥一樣,我想知道你爲什麼試圖這樣做。如果「明確地調用觸發器」是解決問題的一部分,那麼a)可能是錯誤的解決方案,以及b)如果我們知道問題所在,我們可能會提出更好的解決方案。