PL/SQL編輯數據"這些查詢結果不可更新,請包括ROWID或使用SELECT...FOR UPDATE獲得可更新結果"處理


只要有人用了: 

select t.* from 表名  t where 字段=xxx  for update

而不是: 

select t.rowid,t.* from 表名  t where 字段=xxx  for update

進行數據更新操作,就會出現這種情況.

for update 不帶rowid,是一種很傻X的行為,就像使用svn進行源碼修改不先獲取最新一樣.

如果是在客戶現場的真實庫中這樣操作還會導致客戶業務處理掛起,后果是很嚴重的.

因此,在項目組內尤其是新人需要強調相關操作規范,使相關動作形成習慣.

要查詢是誰進行了全表鎖定,參考以下語句:

----查詢oracle用戶名,機器名,鎖表對象

SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username,

l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time

FROM v$locked_object l, all_objects o, v$session s

WHERE l.object_id = o.object_id

AND l.session_id = s.sid

ORDER BY sid, s.serial# ;

更具體內容詳見: 

http://www.cnblogs.com/hangwq/p/3527969.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM