ホームページ >データベース >mysql チュートリアル >トリガーを使用して MySQL での挿入または更新を停止しますか?
MySQL での挿入または更新を停止するには、SIGNAL SQL STATE コマンドを使用する必要があります。トリガーの構文は次のとおりです。
DELIMITER // CREATE TRIGGER yourTriggerName BEFORE INSERT ON yourTableName FOR EACH ROW BEGIN yourCondition THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'anyMessageToEndUser'; END // DELIMITER ;
次に、特定の状況下でテーブルにレコードが挿入されないようにトリガーを作成します。トリガーを作成するクエリは次のとおりです。
mysql> DELIMITER // mysql> CREATE TRIGGER InsertPreventTrigger BEFORE INSERT ON Insert_Prevent -> FOR EACH ROW -> BEGIN -> IF(new.Id < 1 or new.Id > 5) THEN -> SIGNAL SQLSTATE '45000' -> SET MESSAGE_TEXT = 'You can not insert record'; -> END IF; -> END // Query OK, 0 rows affected (0.20 sec) mysql> DELIMITER ;
上記のトリガーは、0 未満または 5 を超えるレコードが挿入されるたびに挿入を停止します。
まずテーブルを作成しましょう。テーブルを作成するクエリは次のとおりです。
mysql> create table Insert_Prevent -> ( -> Id int -> ); Query OK, 0 rows affected (0.62 sec)
次に、0 未満または 5 を超えるレコードを挿入します。 0 未満または 5 を超えるレコードが挿入されるたびに、挿入を停止するトリガーが作成されるため、エラー メッセージが表示されます。エラー メッセージは次のとおりです。
mysql> insert into Insert_Prevent values(0); ERROR 1644 (45000): You cannot insert record mysql> insert into Insert_Prevent values(6); ERROR 1644 (45000): You cannot insert record
1 ~ 5 の間にレコードを挿入しても、エラーは発生しません。前述したように、1 から 5 の間にレコードを挿入するトリガーを作成するため、レコードの挿入は妨げられません。レコードを挿入するクエリは次のとおりです。
mysql> insert into Insert_Prevent values(1); Query OK, 1 row affected (0.20 sec) mysql> insert into Insert_Prevent values(5); Query OK, 1 row affected (0.17 sec) mysql> insert into Insert_Prevent values(2); Query OK, 1 row affected (0.11 sec) mysql> insert into Insert_Prevent values(3); Query OK, 1 row affected (0.23 sec)
select ステートメントを使用して、テーブル内のすべてのレコードを表示します。クエリは次のとおりです:
mysql> select *from Insert_Prevent;
出力は次のとおりです:
+------+ | Id | +------+ | 1 | | 5 | | 2 | | 3 | +------+ 4 rows in set (0.00 sec)
以上がトリガーを使用して MySQL での挿入または更新を停止しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。