8

J'ai vu l'utilisation des transactions dans certains cas, mais jamais vraiment compris dans quelles situations ils devraient être utilisés. Comment et quand les transactions doivent être utilisées (commencer l'extrait de transaction)? J'ai lu que Microsoft ne suggère pas d'utiliser des instructions de transaction (commit, rollback) dans un trigger et une procédure stockée.Comment utiliser les transactions (commencer la transaction, valider la transaction)?

Répondre

5

Les transactions peuvent être utilisées en conjonction avec la gestion des erreurs dans les procédures stockées ou les scripts SQL lors de l'insertion ou de la manipulation de données pour s'assurer que tout est cohérent. Par exemple, si vous avez une procédure stockée qui insère des enregistrements dans une table parent et une table enfant, vous devez vous assurer que l'enregistrement parent est inséré en premier; En cas d'échec, vous pouvez annuler vos modifications afin de ne pas avoir d'enregistrement enfant orphelin.

Erland Sommarskog dispose d'un great article sur l'utilisation de la gestion des erreurs dans SQL Server.

Enfin, où Microsoft a-t-il suggéré de et non d'utiliser des transactions dans des procédures stockées? Je pense que les procédures stockées seraient un endroit idéal pour les utiliser.

+0

Merci, peut-être ma déclaration au sujet était trop droite: il y a un avertissement que l'utilisation de valider ou d'annuler l'intérieur d'une procédure ou d'un déclencheur peut provoquer des erreurs: http://msdn.microsoft.com /en-us/library/ms187844(v=SQL.100).aspx – juur

2

Si je transférait moey d'un compte à un autre, je voudrais que ce soit 100% de réussite ou 100% échouent:

UPDATE PersonalAccount SET Balance = Balance - 100 WHERE Username = 'gbn' 
--what if the server caught fire here? 
UPDATE SavingsAccount SET Balance = Balance + 100 WHERE Username = 'gbn' 

Quant à ce que vous lisez, sauf les déchets complet pas besoin d'utiliser COMMENCER TRAN dans un déclencheur.

Un exemple de « Nested stored procedures containing TRY CATCH ROLLBACK pattern? »

Questions connexes