Question

Récemment cette question a été publiée au sujet de la définition de ce qu'est une transaction dans un contexte général. Une réponse commune à cette question était qu'une transaction devrait être une unité de travail atomique

Ma question a trait à cette atomicité (je pense) Je vois souvent des appels explicites à Rollback dans les procédures stockées SQL.

Est-il généralement une exigence commune des systèmes de traitement des transactions qui rollbacks être appelé explicitement?

Est-ce un retour en arrière se produit automatiquement si une erreur se produit lors de la validation?

Était-ce utile?

La solution

Dans les systèmes de TP, rollback peut se produire en fonction:

  • une demande explicite, comme un appel à ROLLBACK ou similaire
  • une exception ou une erreur non détectée. Celles-ci pourraient inclure:
    • perte de communication avec un participant (dans une transaction distribuée)
    • un invalide ou hors de la plage de valeurs ou paramètres
    • un délai d'attente, en raison de l'incapacité d'acquérir un verrou par exemple, ou le retard de l'utilisateur.
  • dans une validation de la transaction répartie en deux phases, une défaillance de l'un des participants de voter à commettre

Un rollback ne doit pas se produire comme vous le dites « lors de la commission », par lequel je suppose que vous voulez dire « lors d'une tentative de commettre. » Une transaction peut rollback à tout moment après sa création.

Autres conseils

Dans certains cas, un retour en arrière se produira automatiquement en raison d'un déclenchement ou une violation de contrainte. Dans d'autres (comme vous avez vu), la procédure stockée se fait le rollback. Aiden est juste que l'auto-validation varie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top