Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O grau de suporte para transações é definido pelo driver. O ODBC foi projetado para ser implementado em um banco de dados de usuário único ou desktop que não precisa gerenciar várias atualizações em seus dados. Além disso, alguns bancos de dados que dão suporte a transações fazem isso apenas para as instruções DML (Linguagem de Manipulação de Dados) do SQL; há restrições ou semântica de transação especial em relação ao uso da DDL (Linguagem de Definição de Dados) quando uma transação está ativa. Ou seja, pode haver suporte à transação para várias atualizações simultâneas para tabelas, mas não para alterar o número e a definição de tabelas durante uma transação.
Um aplicativo determina se há suporte para transações, se o DDL pode ser incluído em uma transação e quaisquer efeitos especiais da inclusão de DDL em uma transação, chamando SQLGetInfo com a opção SQL_TXN_CAPABLE. Para obter mais informações, consulte a descrição da função SQLGetInfo.
Se o driver não der suporte a transações, mas o aplicativo tiver a capacidade (usando uma API diferente do ODBC) de bloquear e desbloquear dados, os aplicativos poderão obter suporte à transação bloqueando e desbloqueando registros e tabelas conforme necessário. Para implementar o exemplo de transferência de conta, o aplicativo bloquearia os registros de ambas as contas, copiaria os valores atuais, debitaria a primeira conta, creditaria a segunda conta e desbloquearia os registros. Se alguma etapa falhasse, o aplicativo redefiniria as contas usando as cópias.
Mesmo fontes de dados que dão suporte a transações podem não ser capazes de dar suporte a mais de uma transação por vez em um ambiente específico. Os aplicativos chamam o SQLGetInfo com a opção SQL_MULTIPLE_ACTIVE_TXN para determinar se uma fonte de dados pode dar suporte a transações ativas simultâneas em mais de uma conexão no mesmo ambiente. Como há uma transação por conexão, isso só é interessante para aplicativos que têm várias conexões com a mesma fonte de dados.