質問: パススルークエリでのロックについて 毎度お世話になっております。 sqlserver2000とaccess2003を使用しています。 画面から抽出条件を入力し、画面表示ボタンを押すと 抽出条件をwhere句にしたパススルークエリが実行され、 在庫、入庫予定、入庫実績、出荷実績を計算、 画面表示するプログラムを作りたいと考えています。 パススルークエリはselect文ですが、 サブクエリが多くあり、 from句にはたくさんのテーブルが入ります。 また、他端末で実績入力中でも 入力中の実績は反映されなくてもよいので、 実行、画面表示したいのです。 他の質問を検索して、 http://oshiete1.goo.ne.jp/qa3392465.html select文でもロックが発生することを知りました。 しかし、どのように対処するかは理解できませんでした。 ロックをおこすことなく他端末での実績入力も問題なく行われ、 画面表示もできるようにするにはどうすればよいのでしょうか よろしくお願いします。
回答: おおむね正しいです。 (超厳密な議論までは必要ないでしょう) 補足するとしたら、 ・トランザクション分離レベルについては、通常は下から2番目のread committedになっていて、commitしていない更新はselectでは読み取らないけれども、commitされれば即反映するので、今selectしたものが次selectしたものと同じという保証はないこと ・oracleとsql serverとではロックのメカニズムは同じではないこと くらい認識していればいいかと思います。