128 votes

Que se passe-t-il si vous ne validez pas une transaction dans une base de données (par exemple, SQL Server) ?

Supposons que j’ai une requête :

Et puis j’oublie de m’engager ou de revenir en arrière.

Si un autre client tente d’exécuter une requête, que se passe-t-il ?

181voto

marc_s Points 321990

Tant que vous ne validez pas ou n’annulez pas une transaction, elle est toujours en cours d’exécution et peut contenir des verrous.

Si votre client (application ou utilisateur) ferme la connexion à la base de données avant de valider, toutes les transactions en cours d’exécution seront annulées et terminées.

19voto

Piskvor Points 46986

Les transactions sont destinées à s’exécuter complètement ou pas du tout. La seule façon de terminer une transaction est de valider, toute autre façon entraînera une restauration.

Par conséquent, si vous commencez puis ne validez pas, il sera restauré à la fermeture de la connexion (car la transaction a été interrompue sans marquer comme terminée).

3voto

Xhalent Points 3038

dépend du niveau d’isolement de la transaction entrante.

Explication de l’isolation des transactions SQL

2voto

red.clover Points 919

Lorsque vous ouvrez une transaction, rien n’est verrouillé par lui-même. Mais si vous exécutez certaines requêtes à l’intérieur de cette transaction, en fonction du niveau d’isolement, certaines lignes, tables ou pages sont verrouillées, ce qui affectera d’autres requêtes qui tentent d’y accéder à partir d’autres transactions.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X