- - PR -
oracleの排他チェック
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-03-02 14:26
いつもお世話になっております。
DBがoracle9iの環境で Serializable によってロックをかけている場合に、以下のコードだと ロックが解除されるまで、☆のところで実行待ちになってしまいます。 これを避けるために、☆のところでロックがかかっている場合には ”他のユーザーが使用中です。”といったメッセージをだしてRollbackを実行したいのですが なにか良い方法はありますでしょうか? ちなみに、(IsolationLevel.Serializable)を指定せずに Catch e As Exception で ORA-00054をキャッチしてRollbackしようかとも考えたのですが、今回は他の方法を探るべく あえて(IsolationLevel.Serializable)した場合の処理を考えております。 よろしくお願いいたします。 '--トランザクション開始 myTrans = oraCon.BeginTransaction(IsolationLevel.Serializable) cmd.Transaction = myTrans Try cmd.Connection = oraCon '登録 cmd.CommandText = "INSERT INTO TEST (A,B) VALUES(" & txtA.Text & ",'" & txtB.Text & "' )" cmd.ExecuteScalar() ←☆ myTrans.Commit() Catch e As Exception myTrans.Rollback() MsgBox(e.ToString() & ": DBは更新できませんでした。") Exit Sub End Try |
1