| 1、共享方式的表封鎖 共享方式的表封鎖是對(duì)表中的所有數(shù)據(jù)進(jìn)行封鎖,該鎖用于保護(hù)查詢數(shù)據(jù)的一致性,防止其它用戶對(duì)已封鎖的表進(jìn)行更新。其它用戶只能對(duì)該表再施加共享方式的鎖,而不能再對(duì)該表施加獨(dú)占方式的封鎖,共享更新鎖可以再施加,但不允許持有共享更新封鎖的進(jìn)程做更新。共享該表的所有用戶只能查詢表中的數(shù)據(jù),但不能更新。共享方式的表封鎖只能由用戶用SQL語(yǔ)句來(lái)設(shè)置,基語(yǔ)句格式如下: LOCK TABLE <表名>[,<表名>]... IN SHARE MODE [NOWAIT] 執(zhí)行該語(yǔ)句,對(duì)一個(gè)或多個(gè)表施加共享方式的表封鎖。當(dāng)指定了選擇項(xiàng)NOWAIT,若該封鎖暫時(shí)不能施加成功,則返回并由用戶決定是進(jìn)行等待,還是先去執(zhí)行別的語(yǔ)句。持有共享鎖的事務(wù),在出現(xiàn)如下之一的條件時(shí),便釋放其共享鎖: A、執(zhí)行COMMIT或ROLLBACK語(yǔ)句。 B、退出數(shù)據(jù)庫(kù)(LOG OFF)。 C、程序停止運(yùn)行。 共享方式表封鎖常用于一致性查詢過(guò)程,即在查詢數(shù)據(jù)期間表中的數(shù)據(jù)不發(fā)生改變。 2、獨(dú)占方式表封鎖 獨(dú)占方式表封鎖是用于封鎖表中的所有數(shù)據(jù),擁有該獨(dú)占方式表封鎖的用戶,即可以查詢?cè)摫恚挚梢愿略摫?,其它的用戶不能再?duì)該表施加任何封鎖(包括共享、獨(dú)占或共享更新封鎖)。其它用戶雖然不能更新該表,但可以查詢?cè)摫怼*?dú)占方式的表封鎖可通過(guò)如下的SQL語(yǔ)句來(lái)顯示地獲得: LOCK TABLE <表名>[,<表名>].... IN EXCLUSIVE MODE [NOWAIT] 獨(dú)占方式的表封鎖也可以在用戶執(zhí)行DML語(yǔ)句INSERT、UPDATE、DELETE時(shí)隱含獲得。擁有獨(dú)占方式表封鎖的事務(wù),在出現(xiàn)如下條件之一時(shí),便釋放該封鎖: (1)、執(zhí)行COMMIT或ROLLBACK語(yǔ)句。 (2)、退出數(shù)據(jù)庫(kù)(LOG OFF) (3)、程序停止運(yùn)行。 獨(dú)占方式封鎖通常用于更新數(shù)據(jù),當(dāng)某個(gè)更新事務(wù)涉及多個(gè)表時(shí),可減少發(fā)生死鎖。 |
|
|