Pregunta

esta pregunta fue publicada acerca de la definición de lo que es una transacción en un contexto general. Una respuesta común a esta pregunta es que una transacción debe ser una unidad atómica de trabajo

Mi pregunta se refiere a esta atomicidad (creo) Veo a menudo llamadas explícitas a rollback en procedimientos almacenados de SQL.

¿Es generalmente un requisito común de los sistemas de procesamiento de transacciones que reversiones ser llamados explícitamente?

¿Una reversión se produce automáticamente si se produce algún error al cometer?

¿Fue útil?

Solución

En los sistemas de TP, rollback puede ocurrir en base a:

  • una petición explícita, como una llamada a recuperar o similares
  • cualquier excepción no detectada o error. Estos podrían incluir:
    • pérdida de comunicación con un participante (en una transacción distribuida)
    • un inválido o fuera de rango de valor o parámetro
    • un tiempo de espera, debido a la incapacidad para obtener un bloqueo, por ejemplo, o el retraso usuario.
  • en una confirmación de transacción distribuida de dos fases, un fallo de uno de los participantes de voto para cometer

Una retrotracción no tiene por qué se producen como se dice "en la comisión", por lo que supongo que quiere decir "al intentar cometer." Una transacción puede deshacer en cualquier momento después del inicio.

Otros consejos

En algunos casos, una reversión se producirá de forma automática debido a un factor desencadenante o una violación de restricción. En otros (como se ha visto), el procedimiento almacenado en sí hace el rollback. Aiden es justo que el auto-commit varía.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top