2012-04-04 46 views
1

在我的應用程序中,多個請求同時從一個表中讀取記錄,並基於該表插入新記錄。選擇查詢等待插入其他記錄

我想連續執行請求,以便第二個請求讀取第一個請求插入的最新值。

我試圖實現這一點使用選擇更新查詢,但它鎖定行只是等待更新,因爲我無法更新現有的記錄,它得到與以前的請求相同的值。

是否有可能使用Oracle鎖定機制?怎麼樣?

+0

在插入下一個記錄之前,您需要了解最新記錄? – eaolson 2012-04-04 02:18:59

+0

我首先閱讀Oracle概念手冊。您將瞭解數據庫是如何工作的 - 就像作家不阻止讀者一樣。這將幫助您很容易地解決您的問題,或以一種使問題向我們其他人明示的方式重新提出您的問題。就目前而言,這聽起來像您有多個並行的查詢和更新過程,您希望彼此不同。解決方案可能很簡單,如不進行並行處理,或添加一個約束來捕獲和拒絕重複的插入。或者完全不同的東西,我們不能說。 – 2012-04-04 14:11:51

回答

0

夥計 - 這就是交易是!

強烈建議:

  1. 把你的代碼放到一個PL/SQL存儲過程

  2. 裹在選擇/插入 「的begin tran /提交」

  3. 不要即使認爲關於鎖,如果你能避免它!

+1

開始事務不會阻止另一個會話插入表中。 – eaolson 2012-04-04 02:21:30