Mysql
 sql >> Base de données >  >> RDS >> Mysql

COMMIT OR conn.setAutoCommit(true)

Vous devriez en général utiliser Connection.commit() et non Connection.setAutoCommit(true) pour valider une transaction, sauf si vous souhaitez passer de l'utilisation de la transaction au modèle "transaction par instruction" d'autoCommit.

Cela dit, en appelant Connection.setAutoCommit(true) while in a transaction validera la transaction (si le pilote est conforme à la section 10.1.1 de la spécification JDBC 4.1). Mais vous ne devriez vraiment jamais le faire que si vous voulez rester dans autoCommit après cela, car l'activation / la désactivation d'autoCommit sur une connexion peut avoir une surcharge plus élevée sur une connexion que la simple validation (par exemple, parce qu'il doit basculer entre les gestionnaires de transactions, faire des vérifications supplémentaires , etc.).

Vous devez également utiliser Connection.commit() et ne pas utiliser la commande SQL native COMMIT . Comme détaillé dans la documentation de connexion :

Le fait est que des commandes comme commit() et setAutoCommit(boolean) peut faire plus de travail en arrière-plan, comme fermer ResultSets et fermer ou réinitialiser Statements . Utilisation de la commande SQL COMMIT contournera cela et amènera potentiellement votre pilote / connexion dans un état incorrect.