2010-11-16 66 views
0

我想問這個問題有點粗魯,因爲我應該努力(不僅僅是谷歌搜索)來弄清楚自己,但也許有人知道他頭頂的答案。每個事務有多少個存儲過程調用?

每個事務有多少個存儲過程調用(MS SQL 2005/2008)?比方說,我創建了一個存儲過程,它在插入時以及在Java應用程序中觸發,我只提交一次所有插入語句被髮送。存儲過程在每次插入時觸發還是僅在我提交後觸發?還是取決於我如何設置存儲過程?

乾杯, 最大

+0

你說的是存儲過程還是觸發器? – 2010-11-16 01:32:31

+0

都在某種程度上。觸發器正在調用一個存儲過程,所以要麼我修改觸發器只對每個事務或存儲過程觸發一次,以便在沒有做任何事情的情況下返回,除非發生了提交。 – Max 2010-11-16 01:48:17

回答

1

觸發器將每個INSERT語句觸發一次。所以,每次觸發器運行時,存儲過程都會運行。執行次數與事務提交時間無關。

+0

謝謝。是否可以更改觸發器,以便僅在INSERT突發(即提交)結束時觸發? – Max 2010-11-16 01:38:48

+0

不,插入觸發器被設計爲在表上執行INSERT語句時觸發。但是,通過一些額外的工作,你可以避免它。你可以看看INSTEAD OF觸發器,它可以替代INSERT觸發器的工作(不知道這是否適用於你)。或者,你根本沒有觸發器。然後,你將不得不在其他地方(就在提交之前,也可能在Java中)添加一個編碼步驟來完成你想要在觸發器中完成的工作。 – bobs 2010-11-16 01:42:52

+0

好點。我開始質疑我的設計。觸發器是指示表中的UPDATE/INSERT更改。因爲,我可以完全控制所有數據更改應用程序,所以我可能不會完全通過數據庫來指示更改,並通過不同的消息傳遞方式直接指示更改。再次感謝。 – Max 2010-11-16 01:53:39

相關問題