實際上,MySQL SIGNAL 語句是一種錯誤處理機制,用于處理意外事件,并在需要時從應用程序正常退出。基本上,它向處理程序提供錯誤信息。其基本語法如下 –
SIGNAL SQLSTATE | condition_value [SET signal_information_item = value_1,[, signal_information_item] = value_2, etc;]
登錄后復制
此處,SIGNAL 關(guān)鍵字是 SQLSTATE 值或由 DECLARE CONDITION 語句聲明的條件名稱。 SIGNAL 語句必須始終指定 SQLSTATE 值或使用 SQLSTATE 值定義的命名條件。 SIGNAL 語句的 SQLSTATE 值由五個字符的字母數(shù)字代碼組成。我們不能以“00”開始我們自己的 SQLSTATE 代碼,因為這樣的值表示成功并且對于發(fā)出錯誤信號無效。如果我們的值無效,則會發(fā)生 Bad SQLSTATE 錯誤。對于捕獲所有錯誤處理,我們應該分配 SQLSTATE 值“45000”,這表示“未處理的用戶定義的異常”。
為了說明 SIGNAL 語句與 MySQL 觸發(fā)器的使用,我們使用在下面的示例中,我們在 Student_age 表上創(chuàng)建 BEFORE INSERT 觸發(fā)器。如果我們嘗試輸入小于 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
登錄后復制
從上面的結(jié)果集中可以清楚地看出,如果我們嘗試插入小于 0 的年齡,那么使用 SIGNAL 語句將會拋出錯誤。
以上就是我們?nèi)绾螌?SIGNAL 語句與 MySQL 觸發(fā)器一起使用?的詳細內(nèi)容,更多請關(guān)注www.92cms.cn其它相關(guān)文章!