実際、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 '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 ステートメントを使用するとエラーがスローされることが明らかです。
以上がMySQL トリガーで SIGNAL ステートメントを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。