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

只要有人用了: html

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

而不是: oracle

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

進行數據更新操做,就會出現這種狀況.spa

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

若是是在客戶現場的真實庫中這樣操做還會致使客戶業務處理掛起,後果是很嚴重的.對象

所以,在項目組內尤爲是新人須要強調相關操做規範,使相關動做造成習慣.blog

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

get

----查詢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

相關文章
相關標籤/搜索