Question

Il y a quelques minutes, alors que je travaillais sur un nouveau sproc, j'ai exécuté la mauvaise instruction delete. Quelque chose comme ça:

Delete From SomeTable Where SomeStatusID=1

Après 10 secondes, je me suis rendu compte que j'avais saisi le mauvais statut et appuyé sur Annuler. La déclaration a été annulée.

J'ai effectué une restauration dans une base de données distincte pour récupérer la table que je viens probablement de remplacer par un nuk, en pensant que, comme il ne s'agissait pas d'une transaction, certains enregistrements ont probablement été supprimés.

Bizarrement, les archives étaient toutes intactes. Ce qui est curieux, c’est pourquoi at-il traité l’instruction de suppression individuelle comme une transaction dans ce cas, même s’il n’y avait pas de transaction explicite?

Était-ce utile?

La solution

Par défaut, une seule instruction DML est exécutée en tant que transaction. Si l'instruction réussit, la transaction est validée. Si l'instruction est annulée ou si elle échoue, la transaction est annulée.

Ce comportement est intégré au moteur et n'est pas lié au studio de gestion. Voir Transactions à authentification automatique dans la documentation.

Autres conseils

Il y a des toujours transactions. La seule chose qui change est la façon dont ces transactions sont isolées les unes des autres et que, dans Management Studio, la transaction peut ne pas être définie explicitement et est automatiquement validée à la fin de la requête.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top