ホームページ >データベース >mysql チュートリアル >トリガーを使用して MySQL への将来の生年月日の挿入を防ぐ方法
MySQL トリガーを使用して将来の誕生日を挿入しないようにします
質問:
今後の行への誕生日列の挿入を無効にする MySQL トリガーを作成します。
答え:
誕生日列が現在の日付を超える場合に挿入を防ぐには:
<code class="language-sql">CREATE TRIGGER check_birthdate BEFORE INSERT ON table FOR EACH ROW BEGIN IF NEW.birthdate > CURRENT_DATE() THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Birthdate cannot be in the future'; END IF; END;</code>
手順:
CREATE TRIGGER
ステートメントは、check_birthdate
という名前の新しいトリガーの作成を開始します。 BEFORE INSERT
句は、挿入操作の前にトリガーを実行する必要があることを指定します。 ON table
句は、トリガーが適用されるテーブルを指定します。 FOR EACH ROW
は、行ごとにトリガーを実行する必要があることを示します。 IF
ステートメントは、NEW.birthdate
フィールドの値 (挿入された行の列の値) が CURRENT_DATE()
より大きいかどうかをチェックします。そうであれば、トリガーは次のステップに進みます。 SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Birthdate cannot be in the future'
ステートメントは、SQL ステータス '45000' (制約違反を示すユーザー定義の例外条件) の SQL 例外を発生させます。これにより、現在の挿入操作がキャンセルされ、より明確なエラー メッセージが表示されます。 改善されたステートメントには SET MESSAGE_TEXT
が含まれており、エラー メッセージの理解とデバッグが容易になります。 この改訂された回答では、より有益なエラー メッセージが提供され、使いやすさが向上しています。
以上がトリガーを使用して MySQL への将来の生年月日の挿入を防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。