MySQL 外部キー制約: 孤立したレコードの削除
データベースは多くの場合、外部キー制約を通じてテーブル間の関係を維持します。これらの制約により、孤立したレコード (他のテーブルに存在しないデータを参照するレコード) が防止されるため、データの整合性が保証されます。このコンテキストでは、MySQL で外部キーのカスケード削除を実装する方法を検討します。
シナリオ例
次のテーブルについて考えてみましょう:
categories_products テーブルは、多数の他の 2 つのテーブル間の対多の関係。ここで、カテゴリを削除するとします。対応する商品が他のカテゴリにも関連付けられている場合、その商品が削除されないようにするにはどうすればよいですか?
カスケード削除の実装
目的の動作を実現するには、次のことを行う必要があります。 ON DELETE CASCADE 句を使用して外部キー制約を設定します。子テーブル (categories_products) でforeign_key_id 列を定義する場合、この句を次のように指定できます:
FOREIGN KEY (category_id) REFERENCES categories (id) ON DELETE CASCADE
この句により、カテゴリが削除された場合に、category_products テーブル内の対応するすべてのレコードも確実に削除されます。削除されました。ただし、外部キー制約が定義されていないため、カスケードは products テーブルには伝播されません。
デモの例
次のものがあると仮定します。データ:
カテゴリー:
商品:
categories_products:
「赤」カテゴリの場合、次のアクションが発生します:
このように、カスケード削除は、関連する関連レコードのみを削除することでデータの整合性を確保します。孤立したレコードを防ぎ、テーブル間の関係を維持します。
以上がMySQL 外部キー制約を使用してデータを削除するときに孤立したレコードを防ぐ方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。