PLsql 修改查詢結果

在使用plsql查詢出數據後,點擊左上角的鎖圖標,彈出提示信息:these query results are not updateable. Include the ROWID to get updateable results. 該提示對應的查詢語句爲 select * from tablename

方法一 
修改查詢語句爲select t.*, t.rowid from [tablename] t


點擊左上方的鎖,時可以發現已經不在彈出提示,並且編輯器也有了變化,這是我們就可以開始編輯數據了。
修改需要修改的數據,然後點做上方的綠色的勾完成編輯,然後再點鎖,鎖定編輯

編輯完成後別忘了點擊commit提交修改哦,否則修改是不生效的。

方法二
修改查詢語句爲select * from [tablename] for update

點擊左上方的鎖,時可以發現已經不在彈出提示,並且編輯器也有了變化,這是我們就可以開始編輯數據了。

修改需要修改的數據,然後點做上方的綠色的勾完成編輯,然後再點鎖,鎖定編輯

編輯完成後別忘了點擊commit提交修改哦,否則修改是不生效的。

注意:使用for update修改數據後,必須點擊提交或者回滾,不然會造成當前數據鎖死,在生產環境中,會造成後面的數據庫訪問杜塞,進而卡死整個系統的嚴重事故,慎用!!建議用方法1修改數據!



oracle for update使用注意事項

今日在使用  oracle for update sql命令的時候,因爲疏忽,在PLSQL中沒有提交sql,導致生產線卡死20分鐘,血淋淋的教訓啊,

現在,特別注意,運行select...for update後  一定要記得把這個,提交或者回滾,點了,不然數據庫直接鎖死!!

再附上查詢哪個用戶鎖定哪張表的sql:

--查看被鎖的表 
select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
--查看那個用戶那個進程照成死鎖
select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章