MySQL トリガーによる CHECK 制約のエミュレーション
MySQL では、通常、データ整合性を強制するために使用される CHECK 制約は、他のものとは異なり完全にはサポートされていません。 RDBMS。ただし、トリガーを使用してその機能をシミュレートすることは可能です。
エラーを返すトリガーを構築することは可能ですか?
はい、トリガーを作成することは可能です指定された条件が満たされない場合はエラーを返します。これにより、CHECK 制約の動作が効果的にエミュレートされます。
更新のトリガーの例
更新中にエラーを返すトリガーを作成するには、次のテンプレートを使用します。
CREATE TRIGGER <trigger_name> BEFORE UPDATE ON <table_name> FOR EACH ROW BEGIN IF (condition_not_met) THEN SIGNAL SQLSTATE '45000'; SET MESSAGE_TEXT = 'Error message'; END IF; END;
たとえば、「統計」テーブルの月の値が 12 以下であることを確認するには、更新:
CREATE TRIGGER chk_stats1 BEFORE UPDATE ON stats FOR EACH ROW BEGIN IF (new.month > 12) THEN SIGNAL SQLSTATE '45000'; SET MESSAGE_TEXT = 'Month must be less than or equal to 12'; END IF; END;
挿入のトリガーの例
同様に、挿入の場合:
CREATE TRIGGER <trigger_name> BEFORE INSERT ON <table_name> FOR EACH ROW BEGIN IF (condition_not_met) THEN SIGNAL SQLSTATE '45000'; SET MESSAGE_TEXT = 'Error message'; END IF; END;
たとえば、前に月の値を確認するには「統計」テーブルへの挿入:
CREATE TRIGGER chk_stats BEFORE INSERT ON stats FOR EACH ROW BEGIN IF (new.month > 12) THEN SIGNAL SQLSTATE '45000'; SET MESSAGE_TEXT = 'Month must be less than or equal to 12'; END IF; END;
これらのトリガーCHECK 制約の動作をシミュレートし、指定された条件に違反した場合にデータが挿入または更新されないようにします。
以上がMySQL トリガーは CHECK 制約をシミュレートできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。