ネストされたトランザクションが何のために良いのか理解していません。ネストされたトランザクションをコミットすると何もコミットされません。ちょうど、@@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
ネストされたトランザクションを使用し、それらがどのように違いを作るべきであるなぜ私に例を教えてください。
よろしく、ペタル
ネストされたトランザクションを使用せずにセーフポイントを使用できます。ストアドプロシージャは良い点です(私はそれについて考えたことはありません)。しかし、トランザクションでストアドプロシージャを使用しない(または他のコードを呼び出さない)場合、ネストされたトランザクションが必要なのはなぜですか?私はネストされたトランザクションの例を絶えず見ており、その点については私は見ていません。 –
ネストしたトランザクションは、外部トランザクションコードを呼び出すときにのみ有効です。 –
私はあなたに同意し、彼らは外部のトランザクションコードを呼び出すのに便利だと思います。ネストされたトランザクションを処理するSQL Serverの技術的能力は重要であり、すべてのDBシステムで利用可能ではありません。いくつかのケースがあります(前述のSPのように - [SET XACT_ABORT ON']を使用する必要があります)(http://stackoverflow.com/questions/1150032/what-is-the-benefit-of-using-set -xact-at-in-a-stored-procedure-abort-on-a-store-procedure))、それらは "自然に"ネストすることができる。明示的なネストされたトランザクションも使用したことはありません。 – Lucero