J'aimerais pouvoir prédire si un DELETE se heurtera à une violation de contrainte, sans réellement effectuer la suppression.
Quelles sont mes options pour ce faire? Existe-t-il un moyen simple de faire un "essai à sec" d'une SUPPRESSION?
sql-server
sql-server-2008
sql-server-2005
Jay Sullivan
la source
la source
Réponses:
Si votre objectif est de traiter toutes les suppressions uniquement si elles réussissent toutes, pourquoi ne pas simplement utiliser TRY / CATCH:
Si l'objectif est de permettre à toutes les suppressions réussies de réussir même si une ou plusieurs échouent, alors vous pouvez utiliser un TRY / CATCH individuel, par exemple
la source
Une option consiste à commencer une transaction, exécuter votre suppression, puis toujours annuler:
la source
Je voudrais améliorer la solution fournie par Aaron Bertrand avec du code, au cas où vous voudriez ajouter un élément d'une table, gérer les exceptions pour ignorer les échecs ou arrêter le processus après les erreurs.
Celui-ci sélectionnera les enregistrements de la table puis essaiera de les supprimer sans exception:
la source