Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

MS SQL ON DELETE CASCADE mehrere Fremdschlüssel, die auf dieselbe Tabelle zeigen?

Sie müssen dies als STATT DES Löschauslösers für Einblicke implementieren, damit es funktioniert. Etwas wie:

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)

Bei kaskadierenden Löschungen und vielen Fremdschlüsseln müssen Sie häufig Zeit aufwenden, um eine "Kaskaden"-Reihenfolge auszuarbeiten, damit die Löschung, die an der Spitze eines "Baums" erfolgt, erfolgreich auf referenzierende Tabellen kaskadiert wird. Aber das ist in diesem Fall nicht möglich.