집 >데이터 베이스 >MySQL 튜토리얼 >ON DELETE CASCADE는 MySQL 외래 키 제약 조건의 관련 테이블에 어떤 영향을 미칩니까?
계속 삭제 기능이 있는 MySQL 외래 키 제약 조건
외래 키 제약 조건은 데이터 무결성을 유지하고 관계형 데이터베이스에서 고아를 방지하는 데 중요한 역할을 합니다. MySQL에서는 ON DELETE CASCADE 옵션을 사용하여 상위 레코드를 삭제할 때 관련 하위 레코드도 자동으로 삭제되도록 할 수 있습니다.
계단 삭제로 외래 키 제약 조건을 설정하려면 다음을 고려하세요. 테이블:
CREATE TABLE categories ( id INT NOT NULL PRIMARY KEY, name VARCHAR(255) DEFAULT NULL ) ENGINE=InnoDB; CREATE TABLE products ( id INT NOT NULL PRIMARY KEY, name VARCHAR(255) DEFAULT NULL, category_id INT NOT NULL ) ENGINE=InnoDB; CREATE TABLE categories_products ( category_id INT NOT NULL, product_id INT NOT NULL, PRIMARY KEY (category_id, product_id) ) ENGINE=InnoDB; ALTER TABLE products ADD FOREIGN KEY (category_id) REFERENCES categories (id) ON DELETE CASCADE;
이 설정에서 제품에는 카테고리를 참조하는 외래 키가 있으며 ON DELETE CASCADE는 참조된 카테고리가 삭제되면 자동으로 제품을 삭제하도록 지정됩니다. 그러나 이 캐스케이드는 카테고리 ID가 삭제된 카테고리와 일치하는 카테고리_제품의 레코드에만 영향을 미칩니다.
예를 들어 다음 데이터가 있는 경우:
categories: +----+------+ | id | name | +----+------+ | 1 | red | | 2 | blue | +----+------+ products: +----+---------+------+ | id | name | category_id | +----+---------+------+ | 1 | mittens | 1 | | 2 | boots | 1 | | 3 | gloves | 2 | +----+---------+------+ categories_products: +------------+-------------+ | category_id | product_id | +------------+-------------+ | 1 | 1 | | 1 | 2 | | 2 | 3 | +------------+-------------+
'빨간색'을 삭제하는 경우 카테고리:
DELETE FROM categories WHERE (id = 1);
계단식은 카테고리_제품 테이블에만 적용되므로 제품 테이블은 영향을 받지 않습니다. 결과적으로 데이터는 다음과 같습니다.
categories: +----+------+ | id | name | +----+------+ | 2 | blue | +----+------+ products: +----+---------+------+ | id | name | category_id | +----+---------+------+ | 2 | boots | 1 | | 3 | gloves | 2 | +----+---------+------+ categories_products: +------------+-------------+ | category_id | product_id | +------------+-------------+ | 2 | 3 | +------------+-------------+
이러한 배열을 통해 관련 없는 레코드가 의도치 않게 삭제되는 것을 방지하면서 참조 무결성을 유지할 수 있습니다.
위 내용은 ON DELETE CASCADE는 MySQL 외래 키 제약 조건의 관련 테이블에 어떤 영향을 미칩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!