人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SQLServer2000 T-SQLについてストアドAではトランザクションをTranAという名前で宣言し処理によってCOMMIT、ROLLBACKをおこないます。ストアドBではトランザクションをTranBという名前で宣言し処理によってCOMMIT、ROLLBACKをおこないます。TranAとTranBはネストしているとします。ストアドAからストアドBを呼び出した場合、ストアドBでCOMMITしたトランザクションTranBはストアドAのトランザクションTranAがCOMMITされない限りCOMMITされないのでしょうか?また、ストアドAでTranAをROLLBACKした場合、ストアドBのTranBがCOMMITされていた場合、どのような挙動を示すのでしょうか?

●質問者: salvatore
●カテゴリ:コンピュータ 学習・教育
✍キーワード:T-SQL トランザクション ネスト 名前
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● mi-si
●10ポイント

http://www.microsoft.com/japan/msdn/sqlserver/columns/webtech/we...

ご指定のページが見つかりません

この辺を参考にしてみてください。


2 ● n4d
●50ポイント

http://www.sybase.co.jp/product/manuals/index.html

サイベース株式会社 - SYBASE K.K.

ネストされたトランザクションの場合、begin tran はネストレベルを加算します。

commit tranはネストレベルを減算し、0になった時点でコミット処理を行います。

ですので、ご質問の例では、ストアドAをコミットしないと、ストアドBでの変更もコミットされないはずです。

ロールバックの場合は、直ちにネストレベルを0にしてロールバック動作を行います。

ちなみに、セーブポイント( save tran <SavePoint_Name> )を設定して、rollback <SavePoint_Name> 構文を使用すれば、セーブポイントまでの更新を保ったまま、セーブポイント以降の更新をロールバックできます。

◎質問者からの返答

なるほど。

ありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ