SQL Server에서는 이와 같이 계단식 연결을 허용하지 않으므로 트리거를 사용해야합니다. 다음은 삭제하는 방법의 예입니다. 업데이트가 필요하다고 결정한 경우 독자에게 연습 문제로 남겨 둡니다. 이 병목이 될 것입니다 경우 SQL의 특정 버전에
Create Table AdjoiningStates (
State1ID int not null constraint FK_AdjoiningStates_States1 Foreign Key References States,
State2ID int not null constraint FK_AdjoiningStates_States2 Foreign Key References States,
Constraint PK_AdjoiningStates Primary Key (State1ID, State2ID)
)
Go
Create Trigger States_Delete On States Instead Of Delete As
Delete AdjoiningStates From AdjoiningStates a inner join deleted d on a.State1ID = d.StateID
Delete AdjoiningStates From AdjoiningStates a inner join deleted d on a.State2ID = d.StateID
Delete States From States s inner join deleted d on s.StateID = d.StateID
Go
은 그것을 여러 번 사용하기 전에 임시 테이블에 삭제 된 테이블을 복사하는 것이 더 효율적입니다.
Example Fiddle
당신은 당신의 테이블에 대한 다이어그램을 게시 할 수 있습니까? – Lamak
로렌스 (Laurence)는 탁자에 대해 옳은 생각을 가지고 있습니다. 그러나 그것이 내가 시도한 것입니다. –