데이터 불일치를 방지하기 위해 MySQL 외래 키 제약 조건 사용
데이터 무결성을 유지하고 고아 레코드를 방지하려면 외래 키 제약 조건을 구현하는 것이 중요합니다. 이는 InnoDB 테이블을 활용할 때 특히 중요합니다. 외래 키는 테이블 간의 관계를 설정하여 상위 레코드가 삭제되면 해당 하위 레코드도 자동으로 삭제되도록 합니다.
DELETE ON CASCADE 이해
DELETE ON CASCADE는 상위 레코드가 삭제되면 하위 레코드도 자동으로 삭제하는 외래 키 제약 조건입니다. 이는 유효한 상위 레코드 없이 하위 레코드가 존재하는 데이터 분리를 방지합니다.
외래 키 제약 조건 설정 및 DELETE ON CASCADE
DELETE ON으로 외래 키 제약 조건을 설정하려면 CASCADE, 다음 단계를 따르세요.
예:
문제 설명에 언급된 예제 테이블을 고려하세요.
categories - id (INT) - name (VARCHAR 255) products - id - name - price categories_products - categories_id - products_id
적절한 외래 키 제약 조건을 설정하려면 다음과 같이 테이블을 생성합니다. 다음:
CREATE TABLE categories ( id int unsigned not null primary key, name VARCHAR(255) default null )Engine=InnoDB; CREATE TABLE products ( id int unsigned not null primary key, name VARCHAR(255) default null )Engine=InnoDB; CREATE TABLE categories_products ( category_id int unsigned not null, product_id int unsigned not null, PRIMARY KEY (category_id, product_id), KEY pkey (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;
이 설정을 사용하면 카테고리를 삭제하면 카테고리_제품의 해당 레코드만 삭제되어 제품 테이블의 무결성이 유지됩니다. 그러나 제품을 삭제해도 카테고리 테이블에는 영향을 미치지 않습니다.
DELETE ON CASCADE를 사용하여 외래 키 제약 조건을 신중하게 구현하면 데이터 무결성을 유지하고 데이터 손상을 방지하여 데이터베이스에 레코드 간의 올바른 관계가 반영되도록 할 수 있습니다.
위 내용은 DELETE ON CASCADE를 사용하는 MySQL 외래 키 제약 조건이 어떻게 데이터 불일치를 방지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!