ホームページ > データベース > mysql チュートリアル > MySQL トリガーを使用して今後の生年月日の挿入を防ぐにはどうすればよいですか?

MySQL トリガーを使用して今後の生年月日の挿入を防ぐにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-16 18:41:10
オリジナル
239 人が閲覧しました

How to Use a MySQL Trigger to Prevent Future Birthdate Inserts?

MySQL トリガーを使用して、将来の生年月日が挿入されないようにします

MySQL では、トリガーを使用して、特定の条件に基づいて挿入操作を防止できます。そのようなケースの 1 つは、将来、生年月日を含む挿入を防止することです。

これを行うには、BEFORE INSERT 列の値をチェックする birthdate トリガーを作成できます。

<code class="language-sql">CREATE TRIGGER foo BEFORE INSERT ON table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURRENT_DATE()
  THEN
    -- 如何阻止插入?
  END IF;
END;</code>
ログイン後にコピー

IF ステートメント内の挿入操作をキャンセルするには、MySQL の SIGNAL ステートメントを使用できます。

<code class="language-sql">CREATE TRIGGER foo BEFORE INSERT ON table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURRENT_DATE()
  THEN
    SIGNAL SQLSTATE '45000'
      SET MESSAGE_TEXT = '由于出生日期为未来日期,因此不允许插入';
  END IF;
END;</code>
ログイン後にコピー

または、制約に違反するようにデータを変更することもできます。たとえば、生年月日が将来の場合、birthdate 列の値を NULL:

に設定します。
<code class="language-sql">CREATE TRIGGER foo BEFORE INSERT ON table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURRENT_DATE()
  THEN
    SET NEW.birthdate = NULL;
  END IF;
END;</code>
ログイン後にコピー

birthdate 列は NOT NULL として定義されているため、挿入操作は自動的に拒否されます。

以上がMySQL トリガーを使用して今後の生年月日の挿入を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート