ホームページ > データベース > mysql チュートリアル > MySQL トリガーは将来の生年月日に基づいて INSERT をどのように防ぐことができますか?

MySQL トリガーは将来の生年月日に基づいて INSERT をどのように防ぐことができますか?

Susan Sarandon
リリース: 2025-01-16 18:27:11
オリジナル
152 人が閲覧しました

How Can MySQL Triggers Prevent INSERTs Based on Future Birthdates?

MySQL トリガーを使用して将来の日付に基づいて INSERT をブロックする

MySQL トリガーは、データベース操作の前後にコードを自動的に実行することで、データの整合性を強制する強力なメカニズムを提供します。 この例は、BEFORE INSERT トリガーが将来の生年月日を含む行の挿入を防ぐ方法を示しています。

birthdate が将来の場合に INSERT をブロックするトリガーを次に示します。

<code class="language-sql">CREATE TRIGGER prevent_future_birthdate
BEFORE INSERT ON your_table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURDATE() THEN
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Birthdate cannot be in the future';
  END IF;
END;</code>
ログイン後にコピー

このトリガーはカスタム SQLSTATE エラーを通知し、挿入が失敗した理由を説明する明確なメッセージを提供します。

別のアプローチでは、トリガー内のデータを変更して NOT NULL 制約に違反します。

<code class="language-sql">CREATE TRIGGER set_birthdate_null
BEFORE INSERT ON your_table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURDATE() THEN
    SET NEW.birthdate = NULL;
  END IF;
END;</code>
ログイン後にコピー

NOT NULL 制約が birthdate 列に定義されている場合、それを NULL に設定すると INSERT が失敗します。 ただし、この方法では失敗の理由があまり明確になりません。 your_table をテーブルの実際の名前に置き換えることを忘れないでください。

以上がMySQL トリガーは将来の生年月日に基づいて INSERT をどのように防ぐことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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