Mysql
 sql >> Database >  >> RDS >> Mysql

COMMIT O conn.setAutoCommit(true)

In generale dovresti usare Connection.commit() e non Connection.setAutoCommit(true) per eseguire una transazione, a meno che tu non voglia passare dall'utilizzo della transazione al modello "transazione per istruzione" di autoCommit.

Detto questo, chiamando Connection.setAutoCommit(true) mentre in una transazione eseguirà il commit della transazione (se il driver è conforme alla sezione 10.1.1 delle specifiche JDBC 4.1). Ma dovresti farlo davvero solo se intendi rimanere in autoCommit dopodiché, poiché abilitare/disabilitare autoCommit su una connessione può avere un sovraccarico maggiore su una connessione rispetto al semplice commit (ad esempio perché è necessario passare da un gestore di transazione all'altro, eseguire controlli aggiuntivi , ecc).

Dovresti anche usare Connection.commit() e non utilizzare il comando SQL nativo COMMIT . Come dettagliato nella documentazione di connessione:

Il fatto è che comandi come commit() e setAutoCommit(boolean) potrebbe fare più lavoro in background, come chiudere ResultSets e chiudendo o reimpostando Statements . Usando il comando SQL COMMIT lo ignorerà e potenzialmente porterà il tuo driver/connessione in uno stato errato.