2010-01-08 155 views
0

我在SQL Server 2005中觸發器有問題,我創建了觸發器,並且我測試了它手動插入行並且它可以正常工作,但是我調用了存儲過程ac#web應用程序並且觸發器不會被觸發,所以我從Web應用程序中插入了相同的數據,刪除了該行並手動重新插入,並且觸發器再次以這種方式工作,但從存儲過程調用Web應用。SQL Server 2005中觸發器的問題

有什麼建議嗎?

在此先感謝。

阿爾伯特

+2

您需要發佈代碼,因爲必須有其他事情正在進行。 – duckworth 2010-01-08 16:54:27

+1

您的存儲過程在它的工作之前是否禁用觸發器? – 2010-01-08 16:57:56

+0

不,它沒有禁用觸發器,我忘了提到觸發器tOrder將表中的記錄插入到表OrderEx中,因此表OrderEx本身具有另一個觸發器tOrderEx,它在表OrderInfo中插入一條記錄,不確定是否必須對問題做些什麼 – Albert 2010-01-08 17:13:21

回答

0

你應該在一般情況下,避免使用嵌套觸發器,如果​​你能避免這些產品總數,通過各種手段做到這一點。它們很難調試,對其他開發人員不可見(這可能會導致未來的邏輯問題),並可能導致負載下的性能問題。

看到這篇文章:Why use triggers in Microsoft SQL Server?

避免使用嵌套觸發器默認情況下,如果一個觸發器更改其他 表,觸發器宣佈 這些表不會被觸發。 「允許嵌套觸發器」服務器選項 將數據庫設置爲具有相反的 行爲。當 觸發器執行一個動作,即 啓動另一個觸發器時,觸發器會被嵌套, 可以啓動另一個觸發器等等。 觸發器最多可以嵌套32個 級別。嵌套觸發器的邏輯非常難以遵循,並且它們可能會影響性能。

0

而不是觸發器從您的web應用程序使用直接插入語句。這樣監控和調試會更容易。