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