
オラクルで、
受注テーブルと連番ファイルがあります。
端末が100台位あり、どの端末でも受注を入力します。
受注テーブルのキーは連番で、連番ファイルから取得して、1加算した値を受注ファイルの連番にセットし、連番ファイルの値を更新します。
このような場合、同時に受注を行われた場合、
端末(1)が連番ファイルを取得し、更新する間に、
端末(2)が連番ファイルを取得すると、
同じ連番で受注ファイルを作成してしまいます。
SELECT 連番 FROM 連番ファイル
UPDATE 連番ファイル SET 連番=XXXXX
回避策として、データをつかんでいるときに、排他制御などがかけれると聞いたことがあるのですが、どうやって書けばよいのでしょうか?
No.1ベストアンサー
- 回答日時:
排他制御の方法ですが
select 連番 from 連番ファイル for update nowait;
で可能です。
説明:
for updateはcommitまたはrollbackが行われるまでロックします。nowaitをつけると制御を直ぐに返します。
SQL*Plus2つ使用しての実行例:
ユーザ1:select 連番 from 連番ファイル for update nowait;
>>[selectの結果]
ユーザ2:select 連番 from 連番ファイル for update nowait;
>>ORA-00054: リソース・ビジー、NOWAITが指定されていました
ユーザ1:update .....
ユーザ1:commit;
ユーザ2:select 連番 from 連番ファイル for update nowait;
>>[selectの結果]
2番目のユーザ2がnowaitを指定しないとユーザ1がcommitまたはrollbackするまで制御か帰りません。(固まったような状態になります。)お手元に環境があるようでしたら試すと実感できると思います。
只今、2台のPCでお互いにSQL+にて、試して見ました。
(1)1台目に、SELECT .... FOR UPDATEを実行
(2)2台目に同じコマンドを実行
(3)1台目にUPDATE 分→COMMIT
(4)2台目のフリーズ状態が解除され、1台目で更新された
内容を取得。
実際に体感できました。
これで、問題点を解決できます。
大変助かりました。ありがとうございました。
NOWAITを付ける、付けないは仕様によって使い分けたいと思います。
No.2
- 回答日時:
No.1のものですが
ちなみにこの辺の構文が載っているマニュアルは
OTNのトップページの左側にある[リソース]-[ドキュメント(マニュアル)]からPDFをダウンロードできます。ただし、無料のユーザ登録が必要です。
参考URL:http://otn.oracle.co.jp/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel: ファイル名になぜ、[...
-
複数のExcelファイルにある同名...
-
CSVファイルの特定行の削除
-
エクセルのファイル:「自分」が...
-
彼女の過去の恋愛に嫉妬してし...
-
VBA ファイル一覧を取得して全...
-
このファイルは外部のエディタ...
-
[Unity]シーンファイルの中が消...
-
CSVファイルの暗号化
-
Googleドライブについて
-
CDocumentのファイル名を初期化...
-
C# リッチテキスト形式のファイ...
-
ファイルが移動してもリンクの...
-
EXCELVBAにて文字列にして「01...
-
HTMLのファイル移動について
-
ImageJのマクロ機能についてです
-
FTPのgetとputの使いわけ。
-
Excelに貼り付けた画像を圧縮す...
-
batでファイル名を変更したい(...
-
オラクルで更新するまで、排他...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel: ファイル名になぜ、[...
-
エクセルのファイル:「自分」が...
-
彼女の過去の恋愛に嫉妬してし...
-
CSVファイルの特定行の削除
-
ファイルが移動してもリンクの...
-
複数のExcelファイルにある同名...
-
EXCELVBAにて文字列にして「01...
-
xlsファイルが開かない。
-
vbsからのExcelマクロ呼び出し...
-
CSVファイルの暗号化
-
FTPのgetとputの使いわけ。
-
docxをmht形式で保存したファイ...
-
iCloud for Windowsをアンイン...
-
VBA ファイル一覧を取得して全...
-
[Unity]シーンファイルの中が消...
-
VBSでフォルダ内の最新のファイ...
-
VBAにおいて、ファイルの移...
-
このファイルは外部のエディタ...
-
batでファイル名を変更したい(...
-
フォルダ内の複数のファイルの...
おすすめ情報