Me gustaría poder predecir si un DELETE se encontrará con una violación de restricción, sin realizar realmente la eliminación.
¿Cuáles son mis opciones para hacer esto? ¿Hay una manera simple de hacer una "ejecución en seco" de un DELETE?
sql-server
sql-server-2008
sql-server-2005
Jay Sullivan
fuente
fuente
Respuestas:
Si su objetivo es procesar todas las eliminaciones solo si todas tienen éxito, ¿por qué no usar TRY / CATCH?
Si el objetivo es permitir que todas las eliminaciones exitosas tengan éxito incluso si una o más fallan, entonces puede usar TRY / CATCH individual, por ejemplo
fuente
Una opción es comenzar una transacción, ejecutar su eliminación y luego siempre revertir:
fuente
Me gustaría mejorar la solución provista por Aaron Bertrand con algún código, en caso de que desee intentar agregar algún elemento de una tabla, administrar las excepciones para ignorar fallas o también detener el proceso después de los errores.
Éste seleccionará los registros de la tabla y luego intenta eliminarlos sin excepciones:
fuente