ホームページ >データベース >mysql チュートリアル >トリガーは MySQL のエラー処理で CHECK 制約を模倣できますか?
MySQL でのトリガーベースの CHECK 制約エミュレーションの実現可能性を探る
MySQL には CHECK 制約のサポートが組み込まれていないため、データの一貫性を強化します。その結果、トリガーの使用を含む代替ソリューションが模索されてきました。ただし、一般的なトリガーベースのアプローチは、エラーを通知するのではなく、デフォルト値を設定することに頼ることがよくあります。
トリガーは、エラー処理を使用して CHECK 制約を模倣できますか?
問題は、それが可能かどうかという問題です。指定された条件の違反時にエラーを返すトリガーを構築し、CHECK 制約の動作を効果的にシミュレートできます。答えは確かに肯定的です。
データ更新の場合、次のようなトリガーを使用できます。
delimiter $$ create trigger chk_stats1 before update on stats for each row begin if new.month > 12 then SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Cannot add or update row: only'; end if; end; $$
このトリガーは更新操作の前に動作し、「月」フィールドが有効かどうかを確認します。 12 を超えている場合、指定された SQLSTATE とメッセージでエラーがトリガーされます。
同様に、データ挿入の場合、次のようなトリガーが可能です。 used:
delimiter $$ create trigger chk_stats before insert on stats for each row begin if new.month > 12 then SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Cannot add or update row: only'; end if; end; $
これらのトリガーは、ネイティブ CHECK 制約と同様に、目的の CHECK 制約の効果的なエンフォーサーとして機能し、制約違反の場合にはエラーを返します。
以上がトリガーは MySQL のエラー処理で CHECK 制約を模倣できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。