Estou tentando entender o conceito de "autocommit".
Originalmente, eu gosto disso no contexto da API Java JDBC Connection.setAutoCommit(boolean autoCommit)
A pesquisa rápida revelou que o termo não é específico para JDBC, o PostgreSQL também se refere a "autocommit":
https://www.postgresql.org/docs/current/sql-start-transaction.html
No padrão, não é necessário emitir
START TRANSACTION
para iniciar um bloco de transação: qualquer comando SQL inicia um bloco implicitamente. O comportamento do PostgreSQL pode ser visto como a emissão implícita de um COMMIT após cada comando que não segueSTART TRANSACTION
(ouBEGIN
), e por isso é freqüentemente chamado de “autocommit” . Outros sistemas de banco de dados relacionais podem oferecer um recurso de confirmação automática como conveniência.
Se for generalizado, qual é o nível de isolamento do modo de confirmação automática ?
Conceitualmente, como temos apenas uma instrução SQL antes COMMIT
dos níveis de isolamento implícito, quase não faz sentido para o autocommit . Apenas READ UNCOMMITTED pode influenciar o resultado, outras anomalias são definidas em termos de uma sequência de instruções SQL.
Posso alterar o nível de isolamento do autocommit para / longe de READ UNCOMMITTED?
O nível de isolamento padrão é controlado por default_transaction_isolation e está
read committed
em uma instalação padrão.Você pode verificar sua configuração atual usando:
Como o Postgres não suporta (ou implementa)
read uncommitted
não há necessidade de alterar isso "fora de leitura não confirmada".Se você deseja alterar o nível de isolamento para um "mais alto", mesmo no modo de confirmação automática, você pode usar:
O acima irá alterar o padrão para a sessão atual (= conexão).