Oracle更新數據— for update 與 rowid

一、rowid:

rowid運行後並未給數據加上行級鎖(通過物理地址去確定某一行數據),但可以編輯數據,提交事務的瞬間完成上鎖、提交、解鎖等動作,不易發生鎖表。

二、for update

for update是一種行級鎖,又叫排它鎖,一旦用戶對某個行施加了行級加鎖,則該用戶可以查詢也可以更新被加鎖的數據行,其它用戶只能查詢但不能更新被加鎖的數據行.

只有當出現如下之一的條件,纔會釋放共享更新鎖:
1、執行提交(COMMIT)語句
2、退出數據庫(LOG OFF)
3、程序停止運行

select * from tableA where a=a for update

當語句運行時,會在對應行(where子句)加上行級鎖,無where子句等於全表上鎖。若遇到客戶端斷網、測試人員忘記提交\回滾事務,則會發生鎖表。

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