Esos son los mejores y más eficientes. Para consultas de producción, usaría 2 .
Las únicas otras formas en las que puedo pensar serían (en mi opinión) solo adecuadas para la eliminación rápida y sucia de datos en un entorno de prueba (evitando la necesidad de analizar el orden correcto)
- Deshabilitar todos los FK, eliminar los datos deseados y luego volver a habilitar los FK. Esto es ineficiente ya que deben volver a habilitarse
WITH CHECKpara evitar dejar los FK en un estado no confiable, lo que significa que todos los datos conservados deben volver a validarse. - Enumere todos los
DELETEdeclaraciones en las tablas afectadas en orden arbitrario y ejecute el lote tantas veces como sea necesario hasta que se realice correctamente sin errores FK.