Mysql
 sql >> Datenbank >  >> RDS >> Mysql

COMMIT ODER conn.setAutoCommit(true)

Sie sollten im Allgemeinen Connection.commit() verwenden und nicht Connection.setAutoCommit(true) um eine Transaktion festzuschreiben, es sei denn, Sie möchten von der Verwendung der Transaktion zum Modell „Transaktion pro Anweisung“ von autoCommit wechseln.

Das heißt, Aufruf von Connection.setAutoCommit(true) while in a transaction wird die Transaktion festschreiben (wenn der Treiber mit Abschnitt 10.1.1 der JDBC 4.1-Spezifikation kompatibel ist). Aber Sie sollten das wirklich nur tun, wenn Sie danach in autoCommit bleiben wollen, da das Aktivieren / Deaktivieren von autoCommit für eine Verbindung einen höheren Overhead für eine Verbindung haben kann als das einfache Festschreiben (z. B. weil zwischen Transaktionsmanagern gewechselt werden muss, zusätzliche Überprüfungen durchführen usw.).

Sie sollten auch Connection.commit() verwenden und verwenden Sie nicht den nativen SQL-Befehl COMMIT . Wie in der Dokumentation der Verbindung beschrieben:

Die Sache ist, dass Befehle wie commit() und setAutoCommit(boolean) kann mehr Arbeit im Hintergrund erledigen, wie das Schließen von ResultSets und Schließen oder Zurücksetzen von Statements . Mit dem SQL-Befehl COMMIT wird dies umgehen und möglicherweise Ihren Treiber / Ihre Verbindung in einen falschen Zustand bringen.