Pergunta

esta questão foi publicado sobre a definição do que uma transação é num contexto geral. Uma resposta comum a esta questão era de que uma transação deve ser uma unidade atômica de trabalho

A minha pergunta relaciona-se com esta atomicidade (eu acho) muitas vezes eu vejo chamadas explícitas para reverter em procedimentos SQL armazenados.

É geralmente uma exigência comum de sistemas de processamento de transação que reversões ser explicitamente chamado para?

Será que uma reversão ocorrer automaticamente se algum erro ocorre quando cometer?

Foi útil?

Solução

Sistemas no TP, a reversão pode ocorrer com base em:

  • um pedido explícito, como uma chamada para ROLLBACK ou similar
  • qualquer exceção não capturada ou erro. Estas podem incluir:
    • perda de comunicação com um participante (em uma transação distribuída)
    • um inválido ou out-of-range valor ou parâmetro
    • um tempo limite, devido à incapacidade de adquirir um bloqueio, por exemplo, ou atraso do usuário.
  • em dois fases confirmar a transação distribuída, uma falha de um dos participantes voto para cometer

A reversão não precisa ocorrer como você diz "quando cometer", pelo qual eu acho que você quer dizer "quando a tentativa de cometer." Uma transação pode reverter a qualquer momento após o início.

Outras dicas

Em alguns casos, uma reversão ocorrerá automaticamente devido a um gatilho ou uma violação de restrição. Em outros (como você viu), o procedimento armazenado em si faz o rollback. Aiden é certo que varia de confirmação automática.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top