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 CHECK
para evitar dejar los FK en un estado no confiable, lo que significa que todos los datos conservados deben volver a validarse. - Enumere todos los
DELETE
declaraciones en las tablas afectadas en orden arbitrario y ejecute el lote tantas veces como sea necesario hasta que se realice correctamente sin errores FK.