1

SQL 연쇄 삭제가 새롭습니다. 내가 캐스케이드 삭제가 아이들에게 어떻게 작동하는지 궁금 해서요. ==>ChildTable == NoCascade ==>GrandChildTable외래 키에 대한 DELETE CASCADE 옵션이 손자를 삭제합니까?

가 손자도 삭제됩니다

ParentTable == 캐스케이드 : 그래서 같은 테이블 상황이 있다고? 캐스케이드 삭제를 끄려면 자식 테이블에 지정해야합니까? 나는 Fluent API를 사용하여 부모 ParentTable에 대한 삭제를 WillCascadeOnDelete (true)로 ChildTable에 설정하고, ChildTable에 WillCascadeOnDelete (false)를 설정해야합니까? GrandChildTable을 삭제할 수없는 이유는 그것이 도메인 테이블이기 때문입니다.

덕분에, 매트

+0

데이터베이스 시스템은 무엇입니까? – duffy356

+0

@ duffy356 : 이런 식으로 행동하는 심각한 데이터베이스 시스템을 알고 있습니까? –

+0

당신은 아마도 delete set null에서 사용해야합니다. 그렇지 않으면 오류가 발생합니다. –

답변

0

는 손자도 삭제 되나요?

아니요, 데이터베이스 시스템이 완전히 버그가 없거나 불완전하게 구현되어 있다고 말하면 안됩니다. 이는 엔티티 프레임 워크와 관련이 없습니다. 그렇게 할 수 있다면 외래 키 제약 조건에 따라 데이터 무결성을 쉽게 파괴 할 수 있습니다.

자식이 삭제 될 때 손자를 삭제하려면 ChildTable에서 GrandChildTable로 FK 릴레이션에 대한 추가 DELETE CASCADE 제약 조건이 필요합니다. 자식에 대한 DELETE 작업이 해당 자식에 대한 명시 적 DELETE 또는 부모에 대한 계단식 삭제에서 오는 것인지는 중요하지 않습니다.

+0

그래, 적어도 내가 이해할 수있는 것이 무엇인지. 감사합니다 닥 브라운, 나중에 볼 수 – mtleising