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
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.
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? »
- 1. Transaction dans la transaction
- 2. La transaction «Spring aop» ne valide pas la transaction
- 3. Comment enregistrer dans la transaction?
- 4. Protection contre la concurence des transactions (Type de transaction; Transaction IsolationLevel)
- 5. Tables temporaires comment créer avant la transaction, puis utiliser la transaction interne
- 6. MySQL Créer des tables sans valider la transaction en cours
- 7. Comment utiliser la transaction subsonique avec les parents Tables d'enfants
- 8. Transaction distribuée terminée. Soit enrôler cette session dans une nouvelle transaction ou la transaction NULL
- 9. Django transaction.commit_on_success ne pas annuler la transaction
- 10. impossible d'intercepter DataIntegrityViolationException avec la transaction enveloppée
- 11. Tronquer la table dans la transaction
- 12. transaction de transaction commit, retry, ConcurrentModificationException
- 13. Transaction dans la bibliothèque d'entreprise
- 14. Une transaction non valide est détectée à la fin du lot. la transaction est annulée
- 15. transaction Wcf
- 16. kohana transaction avec orm
- 17. Désactiver les contraintes pendant la transaction
- 18. Comment utiliser plusieurs, transactions imbriquées?
- 19. Comment programmer une "transaction distribuée"?
- 20. SQLITE (interface C/C++) - Comment valider une transaction
- 21. comment obtenir transaction id du panier pour apparaître dans les détails de la transaction Paypal
- 22. Connexions multiples avec la même chaîne de connexion sous une transaction unique, transaction élevée?
- 23. Bing Maps Transaction Tracking
- 24. Déterminer si la transaction SQLite3 est actif
- 25. Niveaux ISOLATION dans la transaction
- 26. La transaction ne recule pas
- 27. Comment valider et annuler une transaction dans un serveur SQL?
- 28. Enregistrement TSQL dans la transaction
- 29. C# SQL Transaction distribuée terminée. Soit enregistrez cette session dans une nouvelle transaction, soit la transaction NULL
- 30. SQLServer Transaction Isolation Analogy
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