- - PR -
トランザクションについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-08-17 14:29
複数端末から更新をかける方法を教えて下さい。
データベースはMSDEを使っています。 BeginTransで 100 レコード位いっぺんに開き、修正して 登録ボタンを押して、 commitの処理をします。 しかし、この間に別のPCから、 呼出があると、 トランザクションが重なりエラーになります。 (タイムアウト) どうしたら複数PCからデータを呼び出し、 修正が加えられるのでしょうか このようなプログラムの場合はトランザクション処理はしない物なのでしょうか 先輩方アドバイスを宜しくお願い致します。 | ||||||||
|
投稿日時: 2006-08-17 15:04
100 件程度の処理では、タイムアウトになるほどの待ち時間はないかと思います。 ということは、トランザクションを開始して、そのままオペレーションするような仕様ということでしょうか?
場合によるでしょうね。(ロック管理テーブルを作る場合も...) 「楽観的ロック」 と 「悲観的ロック」 について調べてみてください。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-08-18 18:14
じゃんぬさんが大体のことを書かれていますので、少々別の角度から。
元々の仕様がどのようになっているかが不明なのですが、 「100件のデータ更新を、1トランザクションとする」 という仕様である場合は、トランザクションが終了していないので エラーとなる状態が正しいと思います。 そうではないのでしたら、トランザクションのBeginとCommitの位置を動かしてしまう のがいいのではないでしょうか。 ※極端にいえば、1件単位でBegin〜Commitなど 最終的には、更新仕様次第、というところではないのか、と思います。 | ||||||||
|
投稿日時: 2006-08-23 08:25
じゃんぬねっとさん
返信有難う御座います。 「楽観的ロック」 と 「悲観的ロック」 について調べてみました。 まだ、知識としては曖昧ではありますが勉強していきたいと思います。 Ahfさん 返信有難う御座います。 「楽観的ロック」 と 「悲観的ロック」をふまえて BeginとCommitの位置を動かしてみました。 大変勉強になりました。有難う御座います。 |
1