2012-04-04 9 views
1

私のアプリケーションでは、複数の要求が同時に1つのテーブルからレコードを読み込み、そのテーブルに新しいレコードを挿入することに基づいています。他のレコードの挿入を待つ選択クエリ

2番目のリクエストが最初のリクエストによって挿入された最新の値を読み込むように、シリアルにリクエストを実行します。

更新クエリのselectを使用してこれを達成しようとしましたが、既存のレコードを更新できないため、以前の要求と同じ値になっています。

Oracleのロック機構を使用できますか?どうやって?

+0

次のレコードを挿入する前に、最新のレコードについて何を知っておく必要がありますか? – eaolson

+0

まず、Oracle Conceptsのマニュアルを読むことから始めます。ライターが読者をブロックしないように、データベースの仕組みについて学びます。そしてそれはあなたの問題をかなり簡単に解決するか、問題を他の人にも明確にするためにあなたの質問を言い換えることに役立ちます。今のところ、互いに区別したいと思う複数の並列の照会および更新プロセスがあるように思えます。解決策は、並列処理を行わないか、重複する挿入をトラップして拒否する制約を追加するなどの単純な処理です。あるいはまったく違う何か、私たちは伝えることはできません。 –

答えて

0

Dude - それが何で取引が対象です!

強力な提案:

  1. は、PL/SQLストアド・プロシージャ

  2. ラップで選択/挿入にあなたのコードを入れて

  3. ないで "始まるtranが/コミット"あなたがそれを避けることができる場合でも、はロックについてのを考える!

+1

トランザクションを開始しても、別のセッションがテーブルに挿入されることはありません。 – eaolson

関連する問題