Oracle的共享关闭 独有关闭和共享更新关闭 (2)



  来源:赛迪网    作者:Andy

拥有独有体式把戏表关闭的事务,在呈现如下前提之且自,便释放该关闭:  

(1)、实行COMMIT或ROLLBACK语句。  

(2)、加入数据库(LOG OFF)

(3)、程序截止运转。  

独有体式把戏关闭通常用于更新数据,当某个更新事务触及多个表时,可添加发去世活锁。  

DML锁有如下三种关闭体式把戏:  

(1)、共享关闭体式把戏(SHARE)  

(2)、独有关闭体式把戏(EXCLUSIVE)  

(3)、共享更新关闭(SHARE UPDATE)  

其中SHARE,EXCLUSIVE用于表关闭,SHARE UPDATE用于行关闭。  

1、共享体式把戏的表关闭  

共享体式把戏的表关闭是对表中的所稀有据举行关闭,该锁用于维护查询数据的同等性,避免其它用户对已关闭的表举行更更新。其它用户只能对该表再施加共享体式把戏的锁,而不克不及再对该表施加独有体式把戏的关闭,共享更新锁可以再施加,但差别意持有共享更新关闭的历程做更新。共享该表的一切用户只能查询表中的数据,但不克不及更新。共享体式把戏的表关闭只能由用户用SQL语句来设置,基语句把戏如下: 

[quote:04b72348bd]LOCK TABLE <表名>[,<表名>]...  

IN SHARE MODE [NOWAIT]

[/quote:04b72348bd]  

实行该语句,对一个或多个表施加共享体式把戏的表关闭。当指定了选择项NOWAIT,若该关闭权且不克不及施加成功,则前往并由用户抉择是举行等待,照旧先去实行其它语句。  

持有共享锁的事务,在呈现如下之一的前提时,便释放其共享锁:  

A、实行COMMIT或ROLLBACK语句。  

B、加入数据库(LOG OFF)。  

C、程序截止运转。  

共享体式把戏表关闭常用于同等性查询进程,即在查询数据时期表中的数据不发生发火窜改。  

2、独有体式把戏表关闭  

独有体式把戏表关闭是用于关闭表中的所稀有据,拥有该独有体式把戏表关闭的用户,即可以查询该表,又可以更新该表,其它的用户不克不及再对该表施加任何干闭(包括共享、独有或共享更新关闭)。其它用户当然不克不及更新该表,但可以查询该表。  

独有体式把戏的表关闭可经由议定如下的SQL语句来体现地获得:

LOCK TABLE <表名>[,<表名>]....

IN EXCLUSIVE MODE [NOWAIT]  

独有体式把戏的表关闭也可以在用户实行DML语句INSERT、UPDATE、DELETE时隐含获得。  

拥有独有体式把戏表关闭的事务,在呈现如下前提之且自,便释放该关闭:

(1)、实行   COMMIT或ROLLBACK语句。  

(2)、加入数据库(LOG OFF)  

(3)、程序截止运转。  

独有体式把戏关闭通常用于更新数据,当某个更新事务触及多个表时,可添加发去世活锁。  

3、共享更新关闭体式把戏

共享更新关闭是对一个表的一行或多行举行关闭,因而也称作行级关闭。表级关闭当然担保了数据的同等性,但却削弱了操作数据的并行性。行级关闭确保在用户获得被更新的行到该行举行更新这段时刻内不被其它用户所修正。因而行级锁即可担保数据的同等性又能行进数据操作的迸发性。  

可经由议定如下的两种体式把戏来获得行级关闭:

(1)、实行如下的SQL关闭语句,以体现的体式把戏获得:  

LOCK TABLE <表名>[,<表名>]....  

IN SHARE UPDATE MODE [NOWAIT]  

(2)、用如下的SELECT ...FOR UPDATE语句获得:  

SELECT <列名>[,<列名>]...  

FROM <表名>  

WHERE <前提>  

FOR UPDATE OF <列名>[,<列名>].....[NOWAIT]




版权声明: 原创作品,同意转载,转载时请务必以超链接体式把戏标明文章 原始出处 、作者信息和本声明。不然将追究执法责任。

posted @ 2011-03-07 14:24  蓝色的天空III  阅读(208)  评论(0编辑  收藏  举报