熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

oracleselect語句跳過被鎖記錄的方法

2013-11-13 15:51:43  來源: Oracle 

  有一個表中的數據需要每月更新數據量近百萬考慮由台服務器分攤並分批進行更新

  這就需要能夠查詢一批記錄並同時修改這批記錄的更新狀態以免被正在更新的數據被其他服務器取到

  加行級鎖查詢到記錄後再遍歷結果集更新狀態?

  select * from t_musicinfo for update wait ;

  這樣如果某台服務器鎖定記錄直到更新狀態並提交這段時間其他所有服務器都得等待只有這台服務器釋放後其他服務器才能加鎖進行更新操作台服務器同步操作爭搶的機率豈不是很大有沒有辦法使查詢時對已經鎖定的記錄視而不見

  Google之

  果然有

  select * from t_musicinfo for update nowait skip locked;

  for update skip locked選項是oracle的一個未公開的特性它的含義是select時跳過被鎖的記錄

  那麼接下來遍歷結果集更新狀態

  好像不對結果集打開後再返回就不能再打開了


From:http://tw.wingwit.com/Article/program/Oracle/201311/17418.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.