Domanda

questa domanda è stata pubblicata sulla definizione di ciò che una transazione è in un contesto generale. Una risposta comune a questa domanda è che la transazione deve essere un'unità atomica di lavoro

La mia domanda si riferisce a questo atomicità (credo) Vedo spesso chiamate esplicite di rollback in SQL stored procedure.

E 'generalmente un requisito comune di sistemi di elaborazione delle transazioni che rollback essere chiamati in modo esplicito per?

Fa un rollback verifica automaticamente se qualche errore si verifica quando commettere?

È stato utile?

Soluzione

Nei sistemi di TP, rollback può avvenire in base a:

  • una richiesta esplicita, come una chiamata per eseguire il rollback o simili
  • alcuna eccezione non rilevata o errori. Questi potrebbero includere:
    • perdita di comunicazione con un partecipante (in una transazione distribuita)
    • un invalido o out-of-range valore o parametro
    • un timeout, a causa dell'impossibilità di acquisire un blocco per esempio, o il ritardo utente.
  • in un commit transazione distribuita in due fasi, un guasto di uno dei partecipanti al voto a commettere

Un rollback non deve verificarsi come tu dici "quando commettere", con la quale penso che si intende "quando si tenta di commettere". Una transazione può ritirare in qualsiasi momento dopo nascita.

Altri suggerimenti

In alcuni casi, un rollback avverrà automaticamente a causa di un trigger o una violazione del vincolo. In altri (come non l'avete visto), la stored procedure in sé fa il rollback. Aiden è giusto che l'auto-commit varia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top