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