台灣最大程式設計社群網站
線上人數
1445
 
會員總數:239585
討論主題:185868
歡迎您免費加入會員
討論區列表 >> MS SQL >> trigger失敗,可以讓資料正常寫入table,不要rollback嗎?
[ 變換順序 ]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
trigger失敗,可以讓資料正常寫入table,不要rollback嗎?
價值 : 100 QP  點閱數:415 回應數:21

樓主

studycode
門外漢
0 28
685 59
發送站內信

我在tableA有寫trigger,在insert及update時觸發,
假設在tableA新增一筆資料,但因trigger失敗造成 tableA的資料也新增不成功,
該如何讓 tableA 不管trigger 成功失敗,都照常 insert 呢?



搜尋相關Tags的文章: [ 觸發 ] , [ trigger ] , [ rollback ] ,
本篇文章發表於2017-04-18 15:45
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
16樓
作者回應

studycode
檢舉此回應
我怎麼試都無法將trigger內發生的錯誤記錄下來∼∼
本篇文章回覆於2017-04-20 11:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
17樓
作者回應

studycode
檢舉此回應
我怎麼試都無法將trigger內的錯誤記錄下來~~
本篇文章回覆於2017-04-20 11:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
18樓
回應

神來之筆
捐贈 VP 給 神來之筆 檢舉此回應
要讓trigger內失敗不影響整個insert是有辦法的,
但要先知道你的sqlserver版本
本篇文章回覆於2017-04-20 21:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
19樓
最有價值解答

神來之筆
捐贈 VP 給 神來之筆 檢舉此回應
用set xact_abort off就可避免錯誤時把整個交易rollback,適用sql 2005 以上

以下例子可以略過失敗,並利用try catch 輸出錯誤
test table

trigger

測試:
第一個insert成功新增到兩個table
第二個insert只新增到Table_Master




本篇文章回覆於2017-04-21 00:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
20樓
作者回應

studycode
檢舉此回應
「神來之筆」,太感謝你了!!!!!!!
昨部門本來已經討論新的方案,今天準備要跟外包商談了,
一早來看到你的回覆,我trigger幾乎不用改,
只是加上 set xact_abort off,真的就達成我要的結果了!!

太太太感謝你了!!!!^^
本篇文章回覆於2017-04-21 09:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
21樓
作者回應

studycode
檢舉此回應
也感謝各位的幫忙!!!
本篇文章回覆於2017-04-21 09:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   

回覆
如要回應,請先登入.