国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Oracle - Oracle行級鎖的特殊用法簡析

Oracle行級鎖的特殊用法簡析

2019-11-15 15:35Oracle教程網 Oracle

Oracle有許多的鎖,各種鎖的效用是不一樣的。下面重點介紹Oracle行級鎖,Oracle行級鎖只對用戶正在訪問的行進行鎖定??梢愿玫谋WC數據的安全性,需要的朋友可以了解下

Oracle有許多的鎖,各種鎖的效用是不一樣的。下面重點介紹Oracle行級鎖,Oracle行級鎖只對用戶正在訪問的行進行鎖定??梢愿玫谋WC數據的安全性。 
如果該用戶正在修改某行,那么其他用戶就可以更新同一表中該行之外的數據。 
Oracle行級鎖是一種排他鎖,防止其他事務修改此行,但是不會阻止讀取此行的操作。 
在使用INSERT、UPDATE、DELETE 和SELECT…FOR UPDATE 等 語句時,Oracle會自動應用Oracle行級鎖行級鎖鎖定。SELECT...FOR UPDATE 語句允許用戶每次選擇多行記錄進行更新,這些記錄會被鎖定,且只能由發起查詢的用戶進行編輯。只有在回滾或提交事務之后,鎖定才會釋放,其他用戶才可以編輯這些記錄。 
SELECT...FOR UPDATE 語句的語法如下: 

復制代碼代碼如下:


SELECT ... FOR UPDATE [OF column_list][WAIT n|NOWAIT][SKIP LOCKED]; 


其中: 
OF 子句用于指定即將更新的列,即鎖定行上的特定列。 
WAIT 子句指定等待其他用戶釋放鎖的秒數,防止無限期的等待。 
“使用FOR UPDATE WAIT”子句的優點如下: 
⒈防止無限期地等待被鎖定的行; 
⒉允許應用程序中對鎖的等待時間進行更多的控制。 
⒊對于交互式應用程序非常有用,因為這些用戶不能等待不確定 
4. 若使用了skip locked,則可以越過鎖定的行,不會報告由wait n 引發的‘資源忙'異常報告 
示例: 

復制代碼代碼如下:


create table t(a varchar2(20),b varchar2(20)); insert into t values('1','1'); insert into t values('2','2'); insert into t values('3','3'); insert into t values('4','4'); 


現在執行如下操作: 
在plsql develope中打開兩個sql窗口, 
在1窗口中運行sql 

復制代碼代碼如下:


select * from t where a='1' for update; 


在2窗口中運行sql1 

復制代碼代碼如下:


1. select * from t where a='1'; 


這一點問題也沒有,因為行級鎖不會影響純粹的select語句 
再運行sql2 

復制代碼代碼如下:


2. select * from t where a='1' for update; 


則這一句sql在執行時,永遠處于等待狀態,除非窗口1中sql被提交或回滾。 
如何才能讓sql2不等待或等待指定的時間呢? 我們再運行sql3 

復制代碼代碼如下:


select * from t where a='1' for update nowait; 


則在執行此sql時,直接報資源忙的異常。 
若執行 

復制代碼代碼如下:


select * from t where a='1' for update wait 6; 


則在等待6秒后,報 資源忙的異常。 
如果我們執行sql4 
4. 

復制代碼代碼如下:


select * from t where a='1' for update nowait skip Locke d; 


則執行sql時,即不等待,也不報資源忙異常。 
現在我們看看執行如下操作將會發生什么呢? 
在窗口1中執行: 
select * from t where rownum 《3 nowait skip Locked; 在窗口2中執行: 
select * from t where rownum《6 nowait skip Locked; 
select for update 也就如此了吧,insert、update、delete操作默認加行級鎖,其原理和操作與select for update并無兩樣。 
select for update of,這個of子句在牽連到多個表時,具有較大作用,如不使用of指定鎖定的表的列,則所有表的相關行均被鎖定,若在of中指定了需修改的列,則只有與這些列相關的表的行才會被鎖定。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品久久久久国产 | 日韩成人在线播放 | 久久久久久久国产精品 | 国产精品久久久久久久9999 | 日韩国产在线 | av不卡在线播放 | 韩国毛片在线观看 | 成人免费毛片高清视频 | 午夜寂寞少妇aaa片毛片 | 欧美一区二区 | 亚洲精品乱码久久久久久按摩观 | 一区二区三区高清视频在线观看 | 欧美一级在线 | 久久久久久亚洲精品中文字幕 | 国产欧美久久久久久 | 色综合天天网 | 天天草天天干 | 国产高清一区 | 久久国产精品一区 | 亚洲国产精品一区二区久久,亚洲午夜 | 国产成人在线一区二区 | 欧美日韩一级视频 | a欧美 | 欧美一区久久 | 国产精品久久av | 久久久91精品国产一区二区三区 | 亚洲一区二区精品视频 | 国产高清精品一区二区三区 | 午夜爱爱毛片xxxx视频免费看 | 成人亚洲精品 | 欧美福利 | 中文字幕在线免费看 | 日韩欧美在线观看视频 | 久久三区 | 欧美视频免费 | 91免费精品 | 日韩欧美中文在线 | 日韩美女av在线 | 91免费视频在线 | 日韩中文字幕一区二区三区 | 韩日av在线免费观看 |