Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

MS SQL ON DELETE CASCADE várias chaves estrangeiras apontando para a mesma tabela?


Você terá que implementar isso como um gatilho de exclusão em vez de nos insights, para que funcione. Algo como:
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)

Frequentemente, com exclusões em cascata e muitas chaves estrangeiras, você precisa gastar tempo para elaborar uma ordem de "cascata" para que a exclusão que ocorre no topo de uma "árvore" seja cascateada com sucesso para tabelas de referência. Mas isso não é possível neste caso.