Criar e gerenciar transações

Concluído

Para iniciar explicitamente uma transação, use BEGIN TRANSACTION ou a versão abreviada BEGIN TRAN.

Depois que uma transação for iniciada, ela deverá ser encerrada com:

  • COMMIT TRANSACTION ou
  • TRANSAÇÃO DE REVERSÃO.

Isso garante que todas as instruções dentro da transação sejam confirmadas juntas ou revertidas em conjunto, se houver um erro.

As transações duram até que um comando COMMIT TRANSACTION ou ROLLBACK TRANSACTION seja emitido ou a conexão seja removida. Se a conexão for interrompida durante uma transação, toda a transação será revertida.

As transações podem ser aninhadas e, nesse caso, as transações internas serão revertidas se a transação externa também for.

Nenhum erro é detectado

Quando as instruções na sua transação forem concluídas sem erros, use COMMIT TRANSACTION, às vezes, reduzida para COMMIT TRAN. Isso confirma as alterações no banco de dados. Isso também liberará recursos como bloqueios mantidos durante a transação.

Se um erro for detectado

Se ocorreu um erro dentro da transação, use o comando ROLLBACK.

ROLLBACK desfaz as modificações feitas nos dados durante a transação, deixando-a no estado em que estava antes do início da transação. ROLLBACK também libera recursos, como bloqueios, mantidos para a transação.

XACT_ABORT

Quando SET XACT_ABORT estiver ATIVADO, se o SQL Server gerar um erro, toda a transação será revertida. Quando SET XACT_ABORT estiver OFF, somente a instrução que gerou o erro será revertida se a gravidade do erro for baixa.

Por exemplo, quando SET XACT_ABORT for OFF, uma transação terá três instruções. Duas não têm erros, mas a terceira quebra uma restrição de verificação. Neste exemplo, embora as três instruções estejam em uma transação, duas delas são confirmadas. No mesmo exemplo, se o erro tivesse sido causado por um tipo de dados incorreto, isso teria sido grave o suficiente para emitir uma reversão e nenhuma das instruções teria sido confirmada.

Como nem sempre está claro se a transação será confirmada ou revertida, é essencial adicionar tratamento de erros às transações.