ホームページ >データベース >mysql チュートリアル >MySQL が CHECK 制約をサポートしないのはなぜですか? 代替手段は何ですか?
MySQL へのカスタム CHECK 制約の追加
MySQL テーブルにカスタム CHECK 制約を追加しようとすると、問題が発生する場合があります。指定された条件に基づいてカラムに入力できる値を制限するこれらの制約は、MySQL ではネイティブにサポートされていません。
ステータス カラムに CHECK 制約を適用しようとする、提供されたコードを考えてみましょう。値 'a'、'd'、および 'u' のみを許可します:
CREATE TABLE `Participants` ( ... CONSTRAINT `participants_ibfk_2` CHECK (status IN ('a','d','u')) ... );
ただし、このコードを MySQL で実行すると、次のことがわかります。 CHECK 制約は無視されます。これは、MySQL マニュアルに記載されているように、テーブル定義で定義された CHECK 句が MySQL ストレージ エンジンでサポートされていないためです。
したがって、MySQL では CHECK 制約を定義できますが、これらの制約はに入力されるデータにいかなる制限も課さないでください。 table.
回避策
データの整合性を強制し、意図したとおりに列値を制限するには、次の回避策を検討できます。
以上がMySQL が CHECK 制約をサポートしないのはなぜですか? 代替手段は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。