Esses são os melhores e mais eficientes. Para consultas de produção, eu usaria
2
. As únicas outras maneiras que consigo pensar seriam (IMO) apenas adequadas para remoção rápida e suja de dados em um ambiente de teste (evitando a necessidade de analisar a ordem correta)
- Desabilite todos os FKs, exclua os dados desejados e reative os FKs. Isso é ineficiente, pois eles precisam ser reativados
WITH CHECK
para evitar deixar os FKs em um estado não confiável, o que significa que todos os dados preservados precisam ser revalidados. - Liste todos os
DELETE
instruções nas tabelas afetadas em ordem arbitrária e execute o lote quantas vezes forem necessárias até que ele seja bem-sucedido sem erros de FK.