MySQL 外部キー制約を使用したカスケード削除
データの整合性を確保し、孤立したレコードを防ぐことは、リレーショナル データベース管理において重要です。これらの目標を達成するために、MySQL はカスケード削除による強力な外部キー制約を提供します。
DELETE ON CASCADE を使用した外部キー制約の作成
カスケード削除による外部キー関係を確立するには、次の構文を使用します:
FOREIGN KEY (foreign_column) REFERENCES table (primary_key) ON DELETE CASCADE ON UPDATE CASCADE
たとえば、次のテーブルがあるとします。
CREATE TABLE categories ( id INT NOT NULL PRIMARY KEY, name VARCHAR(255) ) ENGINE=InnoDB; CREATE TABLE products ( id INT NOT NULL PRIMARY KEY, name VARCHAR(255) ) ENGINE=InnoDB; CREATE TABLE categories_products ( category_id INT NOT NULL, product_id INT NOT NULL, PRIMARY KEY (category_id, product_id), FOREIGN KEY (category_id) REFERENCES categories (id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (product_id) REFERENCES products (id) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB;
カスケード削除について
カテゴリ テーブルからレコードを削除すると、関連するレコードがシステムによって自動的に削除されます。 category_products テーブル内で、category_id が削除されたカテゴリと一致します。ただし、products テーブルには外部キー関係が定義されていないため、削除はそれ以上カスケードされません。
たとえば、「blue」カテゴリを削除すると、category_products 内の次のレコードが削除されます。
(blue, mittens) (blue, boots)
ただし、商品の「ブーツ」と「ミトン」はそのままの状態で商品に残ります。 table.
意図しないデータ損失の防止
潜在的なデータ損失を回避するには、カスケード削除を実装する前にその影響を慎重に検討することが重要です。たとえば、説明したシナリオでは、他の製品にも関連付けられているカテゴリを削除すると、それらの製品も削除されます。
したがって、潜在的な影響を徹底的に評価し、関係を明確に定義することが重要です。カスケード削除によってデータの整合性が損なわれないようにするため、テーブル間での削除が行われます。
以上がMySQL の ON DELETE CASCADE は外部キー関係をどのように処理し、孤立レコードを防ぐのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。