"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Quando uma transação não é revertida automaticamente no SQL?

Quando uma transação não é revertida automaticamente no SQL?

Publicado em 2024-11-07
Navegar:329

When is a Transaction Not Automatically Rolled Back in SQL?

Reversão automática de transação

A questão gira em torno do comportamento das transações quando ocorre um erro dentro de um bloco de instruções SQL delimitadas por START TRANSACTION e COMEÇAR TRANSAÇÃO. O OP percebe que quando um erro de sintaxe é encontrado antes da instrução COMMIT TRANSACTION, a transação é automaticamente revertida.

Mecanismo de reversão de transação

Não, as transações não são roladas retornar imediatamente após encontrar um erro. No entanto, certos aplicativos clientes podem adotar políticas específicas para tratamento de erros.

Por exemplo, no cliente de linha de comando mysql:

  • Um erro durante a execução normalmente interrompe o processo de execução e resulta no encerramento do cliente.
  • Sair enquanto uma transação está em andamento causa automaticamente a reversão da transação.

Personalizando a política de reversão

Ao criar seus próprios aplicativos, você tem controle sobre as políticas de reversão de transações. No entanto, observe que há exceções onde uma reversão é imposta:

  1. Client Disconnect: Sair ou desconectar do banco de dados sempre inicia uma reversão de transação.
  2. Tempo limite de deadlock/lock-wait: quando ocorre um deadlock ou tempo limite de espera de bloqueio, ocorre uma reversão implícita.

Para todos os outros cenários, se um erro for encontrado durante uma transação , o erro é retornado e o desenvolvedor tem a opção de confirmar ou descartar a transação.

Declaração de lançamento Este artigo foi reimpresso em: 1729746768 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3