データベースとやりとりする.NETアプリケーションを開発しています。ある方法では、私はtable1
のデータを使用してtable2
の更新値に行くためにThreading.Thread
を起動し、変更を完了した後でtable1
のいくつかの値を変更します。トランザクションの実行中にデータベースの変更にアクセスする
このスレッドは変更された値を読み取りますか?トランザクションが開始される前と同じようにデータをロードしますか?
データベースとやりとりする.NETアプリケーションを開発しています。ある方法では、私はtable1
のデータを使用してtable2
の更新値に行くためにThreading.Thread
を起動し、変更を完了した後でtable1
のいくつかの値を変更します。トランザクションの実行中にデータベースの変更にアクセスする
このスレッドは変更された値を読み取りますか?トランザクションが開始される前と同じようにデータをロードしますか?
2番目のスレッドがトランザクションが開始された同じ接続/セッションを使用しているかどうかによって異なります。そうであれば、そのトランザクション中にこれまでに行った変更を見ることができます。それが異なる接続である場合、それらの変更がコミットされるまでそれは目に見えません。
RepeatableRead
またはReadUncommitted
を使用すると、2番目のスレッドのトランザクションのトランザクション分離レベルによって、table1からコミットされていないデータを読み取ることができます。トランザクション分離レベルの
さらに詳しい情報:
Set Transaction Isolation Level (Transact-SQL)
異なるが、あなたはデータがそれを読んで、table2のを更新する前にTABLE1に書き込まれていることを確認する方法を疑問があるが、これが依存.NETアプリケーションの実装では