ホームページ > データベース > mysql チュートリアル > MySQL 外部キー制約を使用してデータを削除するときに孤立したレコードを防ぐ方法は?

MySQL 外部キー制約を使用してデータを削除するときに孤立したレコードを防ぐ方法は?

Susan Sarandon
リリース: 2024-12-29 11:55:10
オリジナル
439 人が閲覧しました

How to Prevent Orphaned Records When Deleting Data with MySQL Foreign Key Constraints?

MySQL 外部キー制約: 孤立したレコードの削除

データベースは多くの場合、外部キー制約を通じてテーブル間の関係を維持します。これらの制約により、孤立したレコード (他のテーブルに存在しないデータを参照するレコード) が防止されるため、データの整合性が保証されます。このコンテキストでは、MySQL で外部キーのカスケード削除を実装する方法を検討します。

シナリオ例

次のテーブルについて考えてみましょう:

  • カテゴリ: ID、 name
  • products: ID、name
  • categories_products: category_id, product_id

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:

    • 赤いブーツ、緑のミトン、赤いコート、黒い帽子

「赤」カテゴリの場合、次のアクションが発生します:

  • 「赤」カテゴリのエントリがカテゴリ テーブルから削除されます。
  • 「赤いブーツ」と「赤いコート」のエントリ
  • 「ブーツ」と「コート」カテゴリはカテゴリ内に影響を受けません。 table.
  • 「ブーツ」と「ミトン」は、products テーブルに影響を受けません。

このように、カスケード削除は、関連する関連レコードのみを削除することでデータの整合性を確保します。孤立したレコードを防ぎ、テーブル間の関係を維持します。

以上がMySQL 外部キー制約を使用してデータを削除するときに孤立したレコードを防ぐ方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート