2012-11-17 6 views
3

3 개의 테이블이 있습니다. 마지막 두 테이블에는 동일한 필드의 첫 번째 테이블에 대한 외래 키가 있습니다. 둘 다 외래 키가 업데이트 캐스케이드, 캐스케이드 삭제로 설정됩니다. 두 번째 테이블에서 자식 행을 삭제하면 첫 번째 테이블의 부모 행이 변경되지 않습니다. 그러나 세 번째 테이블에서 자식 행을 삭제하면 테이블의 첫 번째 행이 삭제됩니다!하위 행에 CASCADE를 삭제하면 부모가 삭제됩니까?

외래 키는 두 딸과 동일한 방식으로 작동해서는 안됩니까?

+1

DB 스키마 (가능하면 SQLFiddle)를 보여주십시오. –

+0

실례합니다. 나는 그 문제를 해결했다! –

+2

모든 사람이 볼 수 있도록 여기에 해결책을 올리시겠습니까? – Rachcha

답변

1

테이블 2는 외래 키를 지원하지 않는 MyISAM 테이블을 사용하고 다른 두 테이블은 외래 키를 지원하는 InnoDB 엔진을 사용하고 있다고 생각합니다.

From the documentation :

외래 키 관계는 중앙 데이터 값을 유지하는 부모 테이블, 다시 그 부모를 가리키는 동일한 값을 가진 자식 테이블을 포함한다. FOREIGN KEY 절이 하위 테이블에 지정됩니다. 부모 테이블과 자식 테이블은 모두 InnoDB 테이블이어야한다. TEMPORARY 테이블이 아니어야합니다.