Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

COMMIT OR conn.setAutoCommit(true)


Em geral, você deve usar Connection.commit() e não Connection.setAutoCommit(true) para confirmar uma transação, a menos que você queira mudar do uso de transação para o modelo 'transação por instrução' do autoCommit.

Dito isso, chamando Connection.setAutoCommit(true) enquanto em uma transação confirmará a transação (se o driver estiver em conformidade com a seção 10.1.1 da especificação JDBC 4.1). Mas você só deve fazer isso se quiser permanecer no autoCommit depois disso, pois habilitar / desabilitar o autoCommit em uma conexão pode ter uma sobrecarga maior em uma conexão do que simplesmente confirmar (por exemplo, porque precisa alternar entre gerenciadores de transações, faça verificações adicionais , etc).

Você também deve usar Connection.commit() e não use o comando SQL nativo COMMIT . Conforme detalhado na documentação de conexão:

O problema é que comandos como commit() e setAutoCommit(boolean) pode fazer mais trabalho em segundo plano, como fechar ResultSets e fechando ou redefinindo Statements . Usando o comando SQL COMMIT irá ignorar isso e potencialmente colocar seu driver / conexão em um estado incorreto.