Criar e gerenciar transações
Para iniciar explicitamente uma transação, use BEGIN TRANSACTION, ou a versão abreviada, BEGIN TRAN.
Uma vez que uma transação tenha sido iniciada, ela deve ser encerrada com:
- CONFIRMAR TRANSAÇÃO, ou
- TRANSAÇÃO DE REVERSÃO.
Isso garante que todas as declarações dentro da transação sejam confirmadas ou revertidas juntamente se houver um erro.
As transações duram até que um comando COMMIT TRANSACTION ou ROLLBACK TRANSACTION seja emitido ou a conexão seja interrompida. Se a conexão for interrompida em parte de uma transação, toda a transação será revertida.
As transações podem ser aninhadas, caso em que as transações internas serão revertidas se a transação externa for revertida.
Nenhum erro é detetado
Quando os registos em sua transação tiverem sido concluídos sem erro, use COMMIT TRANSACTION, por vezes abreviado 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 for detetado um erro
Se ocorrer um erro na transação, use o comando ROLLBACK.
ROLLBACK desfaz quaisquer modificações feitas nos dados durante a transação, deixando-os no estado em que se encontravam antes do início da transação. ROLLBACK também libera recursos, como bloqueios, mantidos pela transação.
XACT_ABORT
Quando SET XACT_ABORT está ON, se o SQL Server gerar um erro, toda a transação será revertida. Quando o SET XACT_ABORT está OFF, apenas a instrução que originou o erro é revertida se a gravidade do erro for baixa.
Por exemplo, quando SET XACT_ABORT está definido como DESLIGADO, uma transação tem três instruções. Dois não têm erros, mas o terceiro quebra uma restrição de verificação. Neste exemplo, embora as três declarações estejam numa 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 suficientemente grave para emitir uma reversão, e nenhuma das instruções teria sido executada.
Como nem sempre é claro se a transação será confirmada ou revertida, é essencial adicionar tratamento de erros às transações.