20

入れ子になったトランザクションが何に役立つのか、私には理解できませんでした。入れ子になったトランザクションをコミットしても、何もコミットされません。減少するだけ@@TRANCOUNTです。そして、ROLLBACKすべてをロールバックします。

BEGIN TRANSACTION
   //do an update
   BEGIN TRANSACTION
     //do an insert
   COMMIT TRANSACTION
COMMIT TRANSACTION

これとの違いは何ですか:

BEGIN TRANSACTION
     //do an update
     //do an insert
COMMIT TRANSACTION

ネストされたトランザクションを使用する必要がある理由と、それらがどのように違いを生むかの例を教えてください。

4

2 に答える 2

14

ネストされたトランザクションを使用すると、トランザクションがコミットされたときに実際にトランザクションコミットしなくても、トランザクション自体を使用する他のコード (たとえば SP) をコードで呼び出すことができます。

つまり、セーフポイントを使用してトランザクション内でロールバックできます。

それに特化したCodeProjectの記事があります。

于 2012-06-09T11:45:03.260 に答える
0

他の SP 呼び出しを含む 1 つの SP を呼び出すシナリオがある場合。また、その内部 SP は、アプリケーションから独立して呼び出すこともできます。その場合、親 SP だけでなく内部トランザクション (内部 SP) を配置する必要があります。

于 2015-05-15T06:24:39.163 に答える