程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> PL/SQL編輯數據"這些查詢結果不可更新,請包括ROWID或使用SELECT...FOR UPDAT

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

編輯:Oracle教程

只要有人用了: 

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved