MySQL 外部キー エラー 1005 エラー番号 150: 主キーを外部キーとして解決する問題
MySQL の外部キー制約は、フィールドを参照することによってデータの整合性を強制します他のテーブルでも。ただし、主キーを外部キーとして使用する場合、エラー 1005 が発生する可能性があります。このエラーは、参照されるテーブルに参照される列に使用可能なインデックスがない場合に発生します。
主キーは外部キーであってもよいキー?
はい、主キーを外部キーにすることもできます。これは、参照テーブルに有効なデータのみが含まれ、リレーションシップの参照整合性が維持されるため、データベース設計では一般的な方法です。
エラー 1005 の解決
エラー 1005 を解決するには、参照テーブル内の参照列にインデックスを作成する必要があります。このインデックスにより、MySQL は参照されているレコードを効率的に見つけることができます。特定のケースで問題を解決する方法は次のとおりです。
ALTER TABLE Immobile ADD PRIMARY KEY (`ComuneImmobile`, `ViaImmobile`, `CivicoImmobile`, `InternoImmobile`);
主キーを追加すると、列に自動的にインデックスが作成されます。これにより、他のテーブル (Condoni) の外部キーが Immobile テーブルの正しいレコードを参照できるようになります。
代替ソリューション
プライマリにインデックスを作成する場合キーは実現できないため、代わりに複合外部キーを使用できます。これは、主キーの複数の列を外部キー参照として使用することを意味します。この場合、次の外部キーを作成します:
ALTER TABLE Condoni ADD FOREIGN KEY (`ComuneImmobile`, `ViaImmobile`) REFERENCES Immobile (`ComuneImmobile`, `ViaImmobile`);
この複合外部キーは、主キーのインデックスを必要とせずに参照整合性を強制します。
これらを実装することにより、ソリューションを使用すると、データベース テーブル間に必要な関係を確立し、主キーを外部キー参照として使用するときのエラー 1005 を回避できます。
以上が主キーは外部キーとしても機能しますか? MySQL エラー 1005 を修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。