MySQL 외래 키 제약 조건: 분리된 레코드 삭제
데이터베이스는 종종 외래 키 제약 조건을 통해 테이블 간의 관계를 유지합니다. 이러한 제약 조건은 고아 레코드(다른 테이블에 존재하지 않는 데이터를 참조하는 레코드)를 방지하여 데이터 무결성을 보장합니다. 이러한 맥락에서 우리는 MySQL의 외래 키에 대한 연속 삭제를 구현하는 방법을 살펴봅니다.
예시 시나리오
다음 표를 고려하세요.
categories_products 테이블은 많은 항목을 생성합니다. 다른 두 테이블 간의 다대 관계. 이제 카테고리를 삭제한다고 가정해 보겠습니다. 해당 제품이 다른 카테고리와도 연결되어 있는 경우 삭제되지 않도록 하려면 어떻게 해야 합니까?
연속 삭제 구현
원하는 동작을 달성하려면 다음을 수행해야 합니다. ON DELETE CASCADE 절을 사용하여 외래 키 제약 조건을 설정합니다. 하위 테이블(categories_products)에서 foreign_key_id 열을 정의할 때 이 절을 다음과 같이 지정할 수 있습니다.
FOREIGN KEY (category_id) REFERENCES categories (id) ON DELETE CASCADE
이 절은 카테고리가 삭제되면 카테고리가 삭제된 경우 카테고리_제품 테이블의 모든 해당 레코드도 삭제되도록 보장합니다. 삭제되었습니다. 그러나 거기에 정의된 외래 키 제약 조건이 없기 때문에 캐스케이드는 제품 테이블로 전파되지 않습니다.
예제 데모
다음이 있다고 가정합니다. 데이터:
카테고리:
제품:
categories_products:
삭제하면 '빨간색' 카테고리를 선택하면 다음 작업이 수행됩니다.
이런 방식으로 계단식 삭제는 관련 관련 레코드만 제거하여 데이터 무결성을 보장합니다. 고아 레코드를 방지하고 테이블 간의 관계를 유지합니다.
위 내용은 MySQL 외래 키 제약 조건으로 데이터를 삭제할 때 고아 레코드를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!