ホームページ  >  記事  >  データベース  >  MySQL トリガーで SIGNAL ステートメントを使用するにはどうすればよいですか?

MySQL トリガーで SIGNAL ステートメントを使用するにはどうすればよいですか?

PHPz
PHPz転載
2023-09-12 18:53:071110ブラウズ

我们如何将 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 値は、5 文字の英数字コードで構成されます。独自の SQLSTATE コードを「00」で始めることはできません。そのような値は成功を示し、エラーを通知する効果がないからです。値が無効な場合は、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
&#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 ステートメントを使用するとエラーがスローされることが明らかです。

以上がMySQL トリガーで SIGNAL ステートメントを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。