データは変更されてます。について


  2007-07-12 18:14:05  No: 99180

.Editを使って行を更新していますが、2台同時に同じ行を更新しようとした場合、片方のPCがエラーになり「OIP-04119:データは変更されています」が表示されます。
この場合、Update文で行の更新を行った方がいいのでしょうか。それともオラクルが、ORADYN_ORAMODEなのでいけないのでしょうか。どなたかお願いします。


ささき  2007-07-12 18:37:43  No: 99181

>2台同時に同じ行を更新しようとした場合

それは仕様的に出来てよいものなの?
排他制御とかそういった仕様ではじく方法もあると思うけれど、
どっちがDBに反映されるとか、
そういったケースの仕様についてはどう設計されていますか?


  2007-07-12 18:55:33  No: 99182

2台以上で更新処理をするため、同じ行を更新することは起こりうることだと思います。


ささき  2007-07-12 19:06:52  No: 99183

起こりうることは、分かっています。
起こったときに、どちらのデータを反映するのか?
設計できていますか?という質問だったのですが、
レスを読んでいないようなのでもういいです。


もげ  2007-07-12 19:57:36  No: 99184

|■ タイトル
|    ・「〜するには?」のような質問形式にしてください。
|    ・「〜について」の形式は好ましくありません。

'読みましたか(^^;?
それから、
回答に対して一言でも謝意を添えるのが大人のマナーだと思いますよ。

OIP-04119は、
クライアント側に保存されたキャッシュの内容と、DBの内容が異なる場合
(読んだ時のデータと現在のデータが違う)
に発生します。

>2台以上で更新処理をするため、同じ行を更新することは起こりうることだと思います。

そうですよね。たいていのシステムでは、
同じデータに2人で同じ内容を更新するのは非効率(無駄)だったり、
間違って2倍引き落としちゃったとか、2倍発注しちゃったとか(バグですよね)
なんて問題を引き起こす場合もあるので、
そういう場合にどういう動きをするかを決めておく必要があるかと。

解決例の一つを紹介しておきますが、
それが貴殿が作ろうとしている処理に適しているかは判断しかねるので、
システムの設計者とよく相談の上、実装してください。
http://homepage1.nifty.com/k-umezu/oraerror/oip-04119.htm


  2007-07-12 21:48:31  No: 99185

すみません。ちゃんと読んでなくて。
もげさん参考ページありがとうございます。


  2007-07-12 23:44:52  No: 99186

どーでもいいこだが、もげさんのリンク開いてびっくりしたよ。
いきなりダイアログが出てきて、しかも触れないし(^^

ブラウザサイズがちょうどダイアログが中央ちょい上に来るサイズ
だからいきなりブラクラにあったかと勘違いしました。
ふぅ・・・


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加