Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

MS SQL ON DELETE CASCADE plusieurs clés étrangères pointant vers la même table ?

Vous devrez l'implémenter en tant que déclencheur de suppression INSTEAD OF sur les informations, pour que cela fonctionne. Quelque chose comme :

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)

Fréquemment, avec des suppressions en cascade et de nombreuses clés étrangères, vous devez passer du temps à élaborer un ordre "en cascade" afin que la suppression qui se produit au sommet d'un "arbre" soit correctement répercutée en cascade sur les tables de référence. Mais ce n'est pas possible dans ce cas.