2012-07-03 2 views
0

알림, NewItemNotifications 및 항목 테이블이 3 개 있습니다.
일부 항목을 삭제할 때 NewItemNotification 행을 삭제하는 NewItemNotifications 및 Items 테이블에 ON DELETE 규칙을 설정했습니다.
문제는 알림 테이블의 부모 행이 여전히 존재한다는 것입니다. 어떻게 처리 할 수 ​​있습니까?SQL Server ON DELETE 및 상속

enter image description here

답변

2

NewItemNotification는 종속 테이블입니다 - 데이터베이스 제약 조건을 통해 부모 레코드의 삭제를 실행할 수 없다. 유일한 방법은 NewItemNotification에 데이터베이스 트리거를 작성하여 종속 레코드가 삭제 된 후 Notification 테이블에서 삭제를 수행하는 것입니다.

트리거가 존재하는지 알 수 없기 때문에 EF가 NewItemNotification을 삭제하려고하면 이러한 트리거가 문제를 일으킬 수 있습니다. 처음에는 Notification 항목 삭제를 트리거하는 NewItemNotification 항목을 EF없이 삭제했습니다. EF는 Notification 레코드를 다시 삭제하려고 시도하지만 레코드가 이미 삭제되었습니다. 나는 그것이 동시성 예외를 초래할 것이라고 생각한다.

이 경우 가장 좋은 옵션은 계단식 삭제를 사용하지 않고 직접 삭제를 처리하는 것입니다.