복붙노트

[SQL] "DELETE CASCADE ON"MS SQL은 여러 외부 키는 동일한 테이블을 가리키는?

SQL

"DELETE CASCADE ON"MS SQL은 여러 외부 키는 동일한 테이블을 가리키는?

난 내가 같은 테이블을 가리키는 여러 외래 키에 폭포를 필요로 문제가 ..

[Insights]
| ID | Title        |
| 1  | Monty Python |
| 2  | Spamalot     | 

[BroaderInsights_Insights]
| broaderinsight_id | insight_id |
| 1                 | 2          |

기본적으로 통찰력 테이블 중 하나를 기록 하나 또는 두 개의 삭제 될 때 나는 또한 삭제 될 수있는 관계가 필요합니다 ..

나는 이것을 시도했다 :

 CREATE TABLE broader_insights_insights(id INT NOT NULL IDENTITY(1,1),
   broader_insight_id INT NOT NULL REFERENCES insights(id) ON DELETE CASCADE,
   insight_id INT NOT NULL REFERENCES insights(id) ON DELETE CASCADE,
   PRIMARY KEY(id))
Go

난 그냥 통찰력과이 결과에 폭포를 추가하려고했습니다 그래서 :

어떤 아이디어?

감사

다니엘

해결법

  1. ==============================

    1.당신은 일에 그걸 얻기 위해, 통찰력에 INSTEAD OF 삭제 트리거로이를 구현해야합니다. 뭔가 같은 :

    당신은 일에 그걸 얻기 위해, 통찰력에 INSTEAD OF 삭제 트리거로이를 구현해야합니다. 뭔가 같은 :

    create trigger T_Insights_D
    on Insights
    instead of delete
    as
        set nocount on
        delete from broader_insights_insights
        where insight_id in (select ID from deleted) or
        broader_insight_id in (select ID from deleted)
    
        delete from Insights where ID in (select ID from deleted)
    

    자주 삭제 및 외래 키를 많이 계단식으로, 당신은 "나무"의 상단에 발생하는 삭제하는 것이 성공적으로 참조 테이블에 캐스 있도록 "폭포"위해 운동에 시간을 할애 할 필요가있다. 그러나이 경우 수 없습니다.

  2. from https://stackoverflow.com/questions/5018099/ms-sql-on-delete-cascade-multiple-foreign-keys-pointing-to-the-same-table by cc-by-sa and MIT license