MySQLトリガーでSIGNALステートメントを使用するにはどうすればよいですか?
実際、MySQL SIGNALステートメントは、予期しない発生を処理するためのエラー処理メカニズムであり、必要に応じてアプリケーションを正常に終了します。基本的に、ハンドラーにエラー情報を提供します。基本的な構文は次のようになります-
SIGNAL SQLSTATE | condition_value [SET signal_information_item = value_1,[, signal_information_item] = value_2, etc;]
ここで、SIGNALキーワードは、SQLSTATE値、またはDECLARECONDITIONステートメントによって宣言された条件名です。 SIGNALステートメントは、常にSQLSTATE値またはSQLSTATE値で定義された名前付き条件を指定する必要があります。 SIGNALステートメントのSQLSTATE値は、5文字の英数字コードで構成されています。独自のSQLSTATEコードを「00」で開始しないでください。このような値は成功を示し、エラーの通知には無効であるためです。値が無効な場合、不正なSQLSTATEエラーが発生します。キャッチオールエラー処理では、「未処理のユーザー定義例外」を意味する「45000」のSQLSTATE値を割り当てる必要があります。
MySQLトリガーでのSIGNALステートメントの使用を説明するために、 BEFORE INSERTを作成する次の例を使用しています。 student_ageテーブルでトリガーします。 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でWITHROLLUPを正しく使用するにはどうすればよいですか?
WITH ROLLUP-を使用するための構文は、次のとおりです。 select yourColumnName1,sum(yourColumnName2) from yourTableName group by yourColumnName1 with rollup; まずテーブルを作成しましょう- mysql> create table DemoTable1622 -> ( -> EmployeeCountryName varchar(20), -> EmployeeSal
-
MySQLでCURDATEでCONTAINS()を使用するにはどうすればよいですか?
このために、CONCAT()をCURDATE()とともに使用できます。MySQLにはCONTAINS()という名前の関数はありません。 まず、現在の日付を取得しましょう。現在の日付は次のとおりです- mysql> select curdate(); これにより、次の出力が生成されます- +------------+ | curdate() | +------------+ | 2019-11-28 | +------------+ 1 row in set (0.00 sec) テーブルを作成します- mysql> create table DemoTable18