Requête SQL qui va rollback si des déclarations échoue
Je voudrais écrire un script SQL qui exécute plusieurs instructions SQL individuelles; si l'une de ces déclarations d'échouer, j'aimerais reprendre l'ensemble de la transaction. Donc, quelque chose comme:
BEGIN TRANSACTION
insert into TestTable values (1)
insert into TestTable values (2)
insert into TestTabe values (3)
--if any of the statements fail
ROLLBACK
--else
COMMIT
C'est pour MS SQL 2008. Est-ce que je peux faire pour accomplir cette? Peut-être une sorte de manipulation d'exception?
Je me rends compte dans mon exemple, j'ai pu inspecter le TestTable de ces valeurs et de déterminer si les états échec de cette façon. Mais en réalité, my SQL sera beaucoup plus complexe, et je serais plutôt abstrait moi-même de savoir ce qu'est le SQL a été fait.
OriginalL'auteur manu08 | 2010-02-10
Vous devez vous connecter pour publier un commentaire.
SQL Server a eu des exceptions depuis 2005:
Votre LogAndRethrowError pouvez ensuite restaurer tout condamné transactions, à la:
comme indiqué "Votre LogAndRethrowError pouvez ensuite restaurer tout condamné transactions". Ainsi, vous pouvez ajouter dans le ROLLBACK TRAN dans l'instruction Catch (ou ont la SP le faire pour vous).
Ne voir qu'une partie de la réponse en quelque sorte.
OriginalL'auteur Rowland Shaw
C'est l'un des moyens que j'ai fait dans le passé:
Il y a, est-ce mieux? 🙂
Oui, ma tête me fait mal moins maintenant 🙂
OriginalL'auteur Brettski
Je suis paresseux et ont ajouté cette ligne dans tous mes états
http://technet.microsoft.com/en-us/library/ms188792.aspx
OriginalL'auteur jerryhung