首頁 >資料庫 >mysql教程 >我們如何將 SIGNAL 語句與 MySQL 觸發器一起使用?

我們如何將 SIGNAL 語句與 MySQL 觸發器一起使用?

PHPz
PHPz轉載
2023-09-12 18:53:071129瀏覽

我们如何将 SIGNAL 语句与 MySQL 触发器一起使用?

實際上,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
&#39;45000&#39; SET MESSAGE_TEXT = &#39;age less than 0&#39;; END if; END; //
Query OK, 0 rows affected (0.12 sec)

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

從上面的結果集中可以清楚地看出,如果我們嘗試插入小於 0 的年齡,那麼使用 SIGNAL 語句將會拋出錯誤。

以上是我們如何將 SIGNAL 語句與 MySQL 觸發器一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除