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 サイトの他の関連記事を参照してください。