Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

MS SQL ON DELETE CASCADE più chiavi esterne che puntano alla stessa tabella?

Dovrai implementarlo come un trigger di eliminazione INVECE di informazioni dettagliate, per farlo funzionare. Qualcosa come:

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)

Spesso con le eliminazioni a cascata e molte chiavi esterne, è necessario dedicare del tempo a elaborare un ordine "a cascata" in modo che l'eliminazione che si verifica nella parte superiore di un "albero" venga trasferita correttamente alle tabelle di riferimento. Ma in questo caso non è possibile.