如何在MySQL觸發器中使用SIGNAL語句?


實際上,MySQL SIGNAL語句是一種錯誤處理機制,用於處理意外情況,並在需要時從應用程式優雅地退出。基本上,它向處理程式提供錯誤資訊。其基本語法如下:

SIGNAL SQLSTATE | condition_value
[SET signal_information_item = value_1,[, signal_information_item] = value_2,
etc;]

這裡,SIGNAL關鍵字是一個SQLSTATE值或由DECLARE CONDITION語句宣告的條件名稱。SIGNAL語句必須始終指定一個SQLSTATE值或一個用SQLSTATE值定義的命名條件。SIGNAL語句的SQLSTATE值由五個字元的字母數字程式碼組成。我們不能以'00'開頭自定義SQLSTATE程式碼,因為這些值表示成功,對於發出錯誤訊號無效。如果我們的值無效,則會發生Bad SQLSTATE錯誤。對於通用的錯誤處理,我們應該分配SQLSTATE值為'45000',這表示“未處理的使用者定義異常”。

為了說明如何在MySQL觸發器中使用SIGNAL語句,我們使用以下示例,在其中我們為student_age表建立了一個**BEFORE INSERT**觸發器。如果我們嘗試輸入小於0的年齡,它將使用SIGNAL語句丟擲一個錯誤訊息。

示例

mysql> Create trigger before_insert_studentage BEFORE INSERT on
student_age FOR EACH ROW BEGIN IF NEW.age<0 then SIGNAL SQLSTATE
'45000' SET MESSAGE_TEXT = 'age less than 0'; END if; END; //
Query OK, 0 rows affected (0.12 sec)

mysql> Insert into student_age(age, name) values(-10,'gaurav')//
ERROR 1644 (45000): age less than 0

從上面的結果集可以看出,如果我們嘗試插入小於0的年齡,它將使用SIGNAL語句丟擲一個錯誤。

更新於:2020年6月22日

3K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.