SQL Server에서 자체 참조 외부 제약 조건을 처리하는 데 권장되는 방법은 무엇입니까?자체 참조 외래 키 제약 조건 및 삭제
테이블 모델 :
fiData
참조 tabData에서 이전 기록. "MYDATABASE, 테이블을". 충돌이 데이터베이스에 발생했습니다 "FK_tabDataPrev_tabDataNext
"같은 테이블 참조 제약 조건과 충돌 DELETE 문 "내가
fiData
참조하는 레코드를 삭제하면 데이터베이스에서 예외가 발생합니다 "dbo.tabData", 열 'fiData' "
Enforce Foreignkey Constraint
이"예 "로 설정된 경우.
참조되는 레코드를 계단식으로 삭제할 필요는 없지만 참조되는 곳은 fiData=NULL
으로 설정해야합니다. 내 생각은 Enforce Foreignkey Constraint
을 "No"로 설정하고 삭제 트리거를 생성하는 것입니다. 이 방법이 더 좋습니까?
감사합니다.
감사합니다. 그러나 트리거 만들기에 대한 예외가 생깁니다. "DELETE/UPDATE 트리거 대신 INSTEAD/UPDATE 트리거는 정의 된 DELETE/UPDATE 동작에 대해 계단식으로 외래 키가있는 테이블에서 정의 할 수 없습니다." –
나는이 말을 너무 늦게 언급하고 있지만 나 같은 사람을 찾고있다. 하나의 항목 만 삭제합니다. 재귀 적으로 캐스케이드되지는 않습니다. – Arif
@Arif - "ON DELETE CASCADE"가 아니라 "ON DELETE SET NULL"이었습니다. 전자는 재발 할 필요가 없습니다. "ON DELETE CASCADE"에 대해서는 먼저 모든 ID 값에 대해 클로저를 계산 한 다음 삭제를 수행하는 CTE를 권합니다. –