重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

言語:C#
DB:SQLServer2008

1.トランザクション開始
2.テーブルAをUPDATE
3.色々な処理(省略)
4.テーブルAのUPDATE前の情報を参照
5.参照したテーブルをもとにテーブルBをUPDATE
6.すべての処理が正常だったら全テーブルコミット、1つでも失敗したら全テーブルロールバック

問題となっているのは
4.テーブルAのUPDATE前の情報を参照する際に、テーブルAがロックされていて参照出来ないことです。

トランザクション開始時に分離レベルを設定してみましたが同じ結果でした。
tran = con.BeginTransaction(分離レベル);

お分かりになる方ご教授お願いします。

A 回答 (1件)

> 1.トランザクション開始


> 2.テーブルAをUPDATE
> 3.色々な処理(省略)
> 4.テーブルAのUPDATE前の情報を参照

同一トランザクションでUPDATEしてから更新前の情報を取得しようとすること自体無理があるように思えるのですが。
SELECT UPDLOCK でデータ取得してから更新処理を行うのが妥当ではないですか。
    • good
    • 0
この回答へのお礼

ありがとうございます
データを取得してから更新処理を行うようにしました

お礼日時:2012/06/13 10:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!