實際上,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”,這表示“未處理的使用者定義的異常”。
為了說明 SIGNAL 語句與 MySQL 觸發器的使用,我們使用在下面的範例中,我們在 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 語句將會拋出錯誤。
以上是我們如何將 SIGNAL 語句與 MySQL 觸發器一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!