MySQL CHECK 制約: 誤った約束
MySQL テーブルにカスタム CHECK 制約を定義しようとすると、特有の問題が発生する可能性がありますすると、なぜコードが失敗するのか疑問に思うことになります。この記事では、この難題に光を当て、代替ソリューションを提供します。
ステータス列の CHECK 制約を正しく定義し、その値を 'a'、'd'、および 'u' に制限しても、MySQL は次のエラーをスローします。製作中のスパナ。テーブル定義に存在するにもかかわらず、CHECK 制約は MySQL ではサポートされていません。ドキュメントには、解析されるがすべてのストレージ エンジンによって無視されることが明示的に記載されています。
このサポートがないため、ステータス列のデータ整合性を強制する代替方法を見つけるという困難な作業が必要になります。回避策の 1 つはトリガーを使用することですが、その複雑さは圧倒的になる可能性があります。
データベース設計に CHECK 制約が不可欠な場合は、実行可能な代替手段として PostgreSQL を検討してください。このオープンソース RDBMS は CHECK 制約を完全にサポートしており、データの一貫性を維持するためのより信頼性の高いオプションとなっています。
以上がMySQL CHECK 制約が機能しない理由と代替手段は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。