2012-08-30 18 views
1

如果我錯了,請糾正我。觸發器如何在SQL Server內部工作

我所知道的有關觸發器的是,他們是由事件(插入,更新,刪除)觸發。所以我們可以在觸發器中運行存儲過程等。

這將給應用提供了良好的響應,因爲用戶與之交互查詢,是相當小,這個「其他」更長的時間服用的東西是由服務器照顧內部作爲一個獨立的任務。

但我不知道該觸發器如何在服務器內部處理。我真正想知道的是下面給出的情景會發生什麼。觸發後

採取插入。並採取觸發器正在執行更長的存儲過程。然後在觸發器中間可以有另一個插入。我想知道的是第二次觸發會發生什麼。如果可能,我可以讓第二個觸發器忽略它自己。

+1

觸發器由事件觸發 - 然後它們被執行 - 現在。由於您無法控制觸發的時間和頻率,因此您應該將這些觸發器中的處理保持在**絕對最小值** - 我總是嘗試使最多 - 進入另一個表(「審計」表)或者可能將「標記」行放入「命令」表中。但是對信息的實際處理 - 運行存儲過程等 - 應該留給外部工作 - **不要在觸發器中進行大量處理!**這將可靠地殺死所有的性能.... –

回答

1

marc_s給出了正確的答案。爲了完整起見,我會複製它。如果你想有一個異步功能去一個SQL經紀人implimenation

觸發器同步

觸發由事件觸發 - 然後他們被執行 - 現在。由於你無法控制它們被觸發的時間和頻率,因此你應該將這些觸發器中的處理保持在絕對最小值 - 我總是試圖使 - 最多 - 進入另一個表(「審計」表),或者可能將「標記」行放入「命令」表中。但是對信息的實際處理 - 運行存儲過程等 - 應該留給外部工作 - 不要在觸發器中進行大量處理!這將可靠地殺死你所有的性能\響應能力。