問題描述:
在某環境中數據表存在多個觸發器,數據的增刪改是標准的每個表都有的觸發器,此外還存在關於校驗的觸發器;起因是寫完觸發器後,有一次同事詢問說觸發器不起作用了,沒有提示錯誤,但是數據無法保存;我也有點莫名其妙,在查詢分析器中執行直接就提示錯誤了,可在應用程序中無法提示錯誤。
同事提醒說需要執行一段設置觸發器觸發先後順序的代碼,查了一下為 sp_settriggerorder ;看了下幫助修改了一下即可。不過只看 SQLServer 聯機幫助似乎是無法理解的,通過此次才了解該存儲過程的意義。
順便提一句,本環境是在SQLServer2000中,非2005中
以下為聯機幫助中的釋義。
做個簡單測試 ,新建 2 張表和 2 個觸發器
為 TestA 表插入一個 A 值,系統提示該條記有問題 , 不能重復保存!
但是假如在應用程序中的話,很可能系統不會提示錯誤,但是保存失敗,原因是 Tri_Syn_Test1 一定會執行成功,而應用程序捕獲不到後面觸發器中的錯誤了。
這個時候需要將 Order 設置為 first
OK 啦!