MySQL ではチェック制約がサポートされていないため、データの整合性を検証する際に問題が生じます。ただし、トリガーを使用して目的の効果を達成することはできます。
foo テーブルのエージェンシー属性が値 1 ~ 5 に制限されているシナリオを考えてみましょう。この制約に違反する挿入や更新を防ぐためにトリガーを作成できます。
次のトリガーは、SIGNAL 構文を使用して、無効なエージェンシー値が指定された場合にエラーをスローします。
CREATE TRIGGER agency_check BEFORE INSERT ON foo FOR EACH ROW BEGIN IF (new.agency < 1 OR new.agency > 5) THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid agency value'; END IF; END
トリガーは次のことを行うことができます。効果的であっても、パフォーマンスに影響を与える可能性があることに注意することが重要です。 MySQL でチェック制約を強制するための別の解決策は、ストアド プロシージャを使用することです。ただし、このアプローチは、特に複雑な制約の場合には、必ずしも実用的であるとは限りません。
以上がMySQL でトリガーを使用して制約を適用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。