Question

Je veux que quand j'exécute une requête par exemple DELETE FROM Contact, et une erreur est soulevée lors de la transaction, elle doit supprimer les lignes qui peuvent supprimer soulever toutes les erreurs pertinentes pour les lignes qui ne peuvent pas être supprimés.

Était-ce utile?

La solution

Pour SQL Server, vous ne vont pas casser l'atomicité de la commande Supprimer dans une instruction - même émis en dehors d'une transaction explicite, vous allez agir dans un un implicite - par exemple tout ou rien que vous avez vu.

Dans les domaines d'une transaction explicite une erreur par le rouleau par défaut de retour l'ensemble des transactions, mais cela peut être modifié pour essayer juste et rollback la seule déclaration que errored dans la transaction globale (de déclarations multiples) le réglage en est SET XACT_ABORT.

Étant donné que votre suppression est une seule déclaration, le XACT_ABORT ne peut pas vous aider -. La ligne est l'erreur et la suppression sera annulée

Si vous connaissez la condition d'erreur que vous allez faire face (comme une violation FK contrainte, vous pouvez vous assurer de supprimer a un approprié où la clause de ne pas tenter de supprimer des lignes que vous savez générer une erreur.

scroll top