Partilhar via


Transações ODBC

Uma transação é uma unidade de trabalho realizada como uma só operação atômica, ou seja, a operação é bem-sucedida ou falha como um todo. Por exemplo, considere a transferência de dinheiro de uma conta bancária para outra. Essa operação envolve duas etapas: retirar o dinheiro da primeira conta e depositá-lo na segunda. É importante que ambas as etapas sejam bem-sucedidas; não é aceitável que uma tenha sucesso e a outra falhe. Um banco de dados compatível com transações é capaz de garantir isso.

As transações podem ser concluídas ao serem confirmadas ou revertidas. Quando uma transação é confirmada, as alterações feitas a ela se tornam permanentes. Quando uma transação é revertida, as linhas afetadas retornam ao estado em que estavam antes do início da transação. Para ampliar o exemplo de transferência de conta, um aplicativo executa uma instrução SQL para debitar a primeira conta e uma instrução SQL diferente para creditar a segunda conta. Se ambas as instruções tiverem êxito, o aplicativo confirmará a transação. Porém, se alguma instrução falhar por qualquer motivo, o aplicativo reverterá a transação. Nos dois casos, o aplicativo garante um estado consistente no final da transação.

Uma só transação pode abranger várias operações de banco de dados que ocorrem em momentos diferentes. Se outras transações tivessem acesso total aos resultados intermediários, as transações poderiam interferir umas nas outras. Por exemplo, suponha que uma transação insira uma linha, uma segunda transação leia essa linha e a primeira transação seja revertida. A segunda transação agora contém dados para uma linha que não existe.

Para resolver esse problema, há vários esquemas para isolar as transações umas das outras. O isolamento de transações geralmente é implementado bloqueando linhas, o que impede que mais de uma transação use a mesma linha ao mesmo tempo. Em alguns bancos de dados, bloquear uma linha também pode levar ao bloqueio de outras linhas.

Com o aumento do isolamento de transações, vem uma redução na simultaneidade, ou a capacidade de duas transações usarem os mesmos dados ao mesmo tempo. Confira Como definir o nível de isolamento da transação para obter mais informações.

Esta seção contém os tópicos a seguir.