-1
votes

Quel restauration fait réellement?

J'essaie de savoir ce que la restauration fait réellement.

J'ai quelques scénarios:

  1. Rouler après une commission réussie. XXX

  2. Rouler après un commit infructueux. Si vous engagez trois requêtes q1, q2, q3 dans l'ordre dans le même commit () , ce qui arrive à Q1 si le Q2 échoue? et comment conn.rollback () aide? Est-ce que le Conn.commit () Rollback sans avoir besoin de Rollback () ? XXX


4 commentaires

Pas vraiment java liée, il ne s'agit que d'un comportement de base de données standard, mais que se passe-t-il si vous le testez? (Rollback après que cela ne fait rien, il n'y a rien à retourner après qu'il soit commis)


Je me sens comme la réponse à cette question est une Google loin ...


Voir Wikipedia


Vous mettriez généralement le Rollback () dans le bloc de capture, pas dans le enfin .


3 Réponses :


3
votes

Comme son nom l'indique, Rollback () Roule la transaction de retour et ne modifie aucune modification de la base de données.

Toutes les déclarations de votre bloc d'essai sont exécutées séquentiellement sur dB. Si l'un d'entre eux jette une exception, le code n'engage pas les modifications, mais cela les revient tout et laisse la base de données à l'état non comprimé.

Cela aide à atteindre l'atomicité pour plusieurs transactions.


0 commentaires

2
votes

COMMIT ET ROLLBACK Informez la base de données à commenter ou à annuler (I.e. Annuler) la transaction en cours. Au niveau Java, ils ne font pas beaucoup de choses du tout.

Comment cela se fait sur la base de données varie de la mise en œuvre actuelle de la base de données.

Dans votre cas, si Q2 échoue, quel que soit les effets Q1, Q1 avait sur la base de données sera annulé.

Et, naturellement, Q3 ne sera pas exécuté du tout.


0 commentaires

2
votes

L'idée de la restauration est que, chaque fois que vous insérez / mettez à jour des données dans la base de données, s'il y a des erreurs Rollback vous évitera à partir de l'insertion / mise à jour des données erronées / non complètes dans la base de données. En regardant votre code de code 1- est incorrect, vous devez retourner dans la capture, si l'erreur est capturée que la restauration doit se produire, elle est finalement exécutée, donc à cette époque, les données sont déjà engagées, il n'y a rien à retourner.


0 commentaires