如何在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語句丟擲一個錯誤。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP