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

Servidor SQL - exclusão recursiva


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)
  1. 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.
  2. 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.