|
分類:[VB.NET/VB2005 以降]
下記のようなコーディングをしたところ、更新処理をコミットされるまで他のトランザクション(別ユーザ)がテーブルに更新出来ない現象が発生致しました。
楽観的排他を行なう場合はどのようなコーディングが必要でしょうか?
実行環境OS:WindowsXP .NETのバージョン:.NET Framework2.0 データベース:Oracle8I
以下、ソース ------------------------------------------------------------------------
'接続オブジェクトをインスタンス化します。 Me._con = New OracleConnection(Me._ocsb.ConnectionString)
'データベースに接続します。 Me._con.Open()
'コマンドオブジェクトをインスタンス化します。 Me._cmd = New OracleCommand()
'コマンドオブジェクトに接続オブジェクトを引き渡します。 Me._cmd.Connection = Me._con
'トランザクションを開始します。 Me._tran = Me._con.BeginTransaction()
'コマンドオブジェクトにトランザクションを引き渡します。 Me._cmd.Transaction = Me._tran
'SQLを設定します。 Dim sql As String = "*更新SQL*"
'SQLを実行します。 Me._cmd.CommandText = sql
'この処理間に更新対象テーブルが他のトランザクションからアクセス出来なくなります。
'コミット処理を行います。 Me._tran.Commit()
------------------------------------------------------------------------
|