亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

行級觸發器數據確認一旦不通過,使用raise_application_error拋出異常后就不繼續執行后面所有行了嗎?

行級觸發器數據確認一旦不通過,使用raise_application_error拋出異常后就不繼續執行后面所有行了嗎?

怎么能只在不通過的行不執行,然后跳過該行繼續執行下一行呢?

正在回答

0 回答

行級觸發,就表明針對的是【行】。

如,表TABLE,有兩個用戶A,B在操作TABLE兩行數據,A操作的行達到觸發條件,自然按里面的邏輯執行;

B操作行沒有達到觸發條件,自然對原來行不做任何處理。您就把每一行看作在表里分隔開的對象就行了,互不干擾

1 回復 有任何疑惑可以回復我~
#1

STRONG很壯不怕撞 提問者

感謝回答:) 我之前應該是理解錯了,之前沒理解行級觸發器觸發的時候只是針對一行數據的操作,雖然觸發器中寫了 for each row 所以在漲工資的案例中,每更新一行就觸發一次行級觸發器,拋出異常也只影響這一行數據。
2016-04-18 回復 有任何疑惑可以回復我~
#2

qq_騎著蝸牛去旅行_03471935

不對吧,我實際測試的是:比如sal更改前的值是:1000,1500,3000,5000 我在if條件里面設置的是更新后的薪水如果大于2000,就拋出異常,但執行發現只拋出了3000的這一條異常,5000的沒拋出, 對比執行前和執行后的情況,發現薪水字段內容沒發生變化,一條都沒有,雖然有一半的數據不符合異常條件 這就說明兩點:1,如果有一條滿足異常情況,所有的數據都更新不了 2,遇到符合異常的條件時,就報錯不再繼續往下執行
2016-07-06 回復 有任何疑惑可以回復我~
#3

qq_騎著蝸牛去旅行_03471935

這是我寫的觸發器 create or replace trigger checksalary before update on emp for each row BEGIN if :new.sal > 2000 then Raise_application_error(-20002,'無法更新'); end if; end; / 這是我執行的更新語句 update emp set sal=sal+1;
2016-07-06 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

行級觸發器數據確認一旦不通過,使用raise_application_error拋出異常后就不繼續執行后面所有行了嗎?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號