2009-06-10 5 views
1

最近this質問は取引が一般的な状況にあるものの定義について投稿しました。この質問への共通の答えは、トランザクションが私の質問は、このアトミックに関連する仕事トランザクション処理:いつロールバックが行われますか?

の原子単位でなければならないことだった(と思う)私は、多くの場合、SQLストアド・プロシージャでROLLBACKする明示的な呼び出しを参照してください。

は、それは一般的にロールバックを明示的に呼び出されたトランザクション処理システムの一般的な要件ですか?コミット時に何らかのエラーが発生した場合

は自動的にロールバックが発生していますか?

答えて

2

、ロールバックに基づいて発生する可能性があります。

  • 任意のキャッチされない例外またはエラーをロールバックまたは
  • 類似するコールのような明示的な要求、。これらは含むかもしれない:例えば(分散トランザクションで)参加
  • との通信の
    • 損失無効または範囲外の値またはパラメータ
    • ロックを取得できないことに起因するタイムアウトを、 、またはユーザーの遅延。・段階的2で
  • 分散トランザクション、

ロールバック、私はあなたを推測していることで、あなたは「コミットするとき」言うように発生していない必要性をコミットするように投票する参加者の一人の失敗を犯します「コミットしようとするとき」を意味します。トランザクションは、開始後いつでもロールバックできます。

+0

はい、私はコミットする試みを意味し、それは私が実際にそれを指摘しthantsを作っているはずな区別だんでした – Crippledsmurf

0

いくつかのケースでは、ロールバックが原因トリガーまたは制約違反を自動的に発生します。あなたが見たような他のものでは、ストアドプロシージャ自体がロールバックを行います。 Aidenが正しいのは、自動コミットが異なることです。 TPシステムで

関連する問題