commitTransaction
Nesta página
Definição
commitTransaction
Novidades na versão 4.0.
Salva as alterações feitas pelas operações na transação multidocumento e termina a transação.
Dica
No
mongosh
, este comando também pode ser executado através dos métodos de ajudaSession.commitTransaction()
eSession.withTransaction()
.Os métodos auxiliares são convenientes para os usuários
mongosh
, mas podem não retornar o mesmo nível de informações que os comandos do banco de dados. Nos casos em que a conveniência não for necessária ou os campos de retorno adicionais forem necessários, use o comando de banco de dados.Para executar
commitTransaction
, o comando deve ser executado noadmin
banco de dados e executado dentro de umSession()
.
Sintaxe
O comando tem a seguinte sintaxe:
db.adminCommand( { commitTransaction: 1, txnNumber: <long>, writeConcern: <document>, autocommit: false, comment: <any> } )
Comportamento
Escreva preocupação
Ao confirmar a transação, a sessão utiliza a write concern especificada no início da transação. Consulte Session.startTransaction()
.
Se você confirmar usando a write concern "w: 1"
, sua transação poderá ser revertida se houver um failover.
Atomicidade
Quando uma transação é confirmada, todas as alterações de dados feitas na transação são salvas e visíveis fora da transação. Ou seja, uma transação não confirmará algumas de suas alterações enquanto reverte outras.
Até que uma transação seja confirmada, as alterações de dados feitas na transação não serão visíveis fora da transação.
No entanto, quando uma transação é gravada em vários fragmentos, nem todas as operações de leitura externas precisam esperar que o resultado da transação confirmada fique visível nos fragmentos. Por exemplo, se uma transação estiver comprometida e escrever 1 estiver visível no fragmento A, mas escrever 2 ainda não estiver visível no fragmento B, uma leitura externa em questão de leitura "local"
poderá ler os resultados da escrita 1 sem ver a escrita 2.