现在的位置: 首页 > 综合 > 正文

PL/SQL 11g R2 —— 事务

2013年06月15日 ⁄ 综合 ⁄ 共 1653字 ⁄ 字号 评论关闭
文章目录

行级锁

SELECT … FOR UPDATE [OF columns] [WAIT n | NOWAIT];
说明: OF 子句用于指定即将更新的列,即锁定行上的特定列。WAIT 子句指定等待其他用户释放锁的秒数,防止无限期的等待

表级锁

使用命令显示地锁定表,应用表级锁的语法是: LOCK TABLE table_name IN mode MODE;

行共享 (ROW SHARE)    – 禁止排他锁定表
行排他(ROW EXCLUSIVE) – 禁止使用排他锁和共享锁
共享锁(SHARE)
      锁定表,仅允许其他用户查询表中的行
      禁止其他用户插入、更新和删除行
      多个用户可以同时在同一个表上应用此锁
共享行排他(SHARE ROW EXCLUSIVE) – 比共享锁更多的限制,禁止使用共享锁及更高的锁

排他(EXCLUSIVE) – 限制最强的表锁,仅允许其他用户查询该表的行。禁止修改和锁定表

RS Row share table lock

以下的操作会产生RS lock

   Select * from tab for update.

  LOCK TABLE table IN ROW SHARE MODE;

  RS不允许的操作:

    LOCK TABLE table IN EXCLUSIVE MODE;
 

RX (RowExclusive Table Locks)

以下的操作会产生RX lock

1:INSERT,UPDATE ,DELETE

2:LOCK TABLEtable IN ROW EXCLUSIVE MODE;

 

RX不允许的操作

 LOCKTABLE table IN SHARE MODE;

 LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE;

 LOCKTABLE table IN EXCLUSIVE MODE;

S (ShareTable Locks )

以下操作产生S lock.

   LOCK TABLE table IN SHARE MODE;

S不允许的操作

   LOCK TABLE table IN SHARE ROW EXCLUSIV EMODE;

   LOCK TABLE table IN EXCLUSIVE MODE;

   LOCK TABLE table IN ROW EXCLUSIVE MODE;

SRX (ShareRow Exclusive Table Locks)

以下操作产生SRX LOCK

  LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE;

SRX不允许的操作.

  LOCK TABLE table IN SHARE MODE;

  LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE;

 LOCK TABLE table IN ROW EXCLUSIVE MODE;

   LOCK TABLE table IN EXCLUSIVE MODE;

X(Exclusive Table Locks )

以下操作产生X LOCK

LOCK TABLE table IN EXCLUSIVE MODE;

X不允许的操作

   不允许所有的操作

事务处理

oraclecommitrollbacksavepoint这三条语句可以完 ,使用savepoint可以做到部分撤消事务。  

锁模式

锁模式 锁描述 解释 SQL操作
0 none
1 NULL select
2 SS(Row-S) 不用许获得6级锁,允许获得2、3、4、5级锁;允许做DML、alter操作,不允许做drop、truncate。 ROW SHARE
3 SX(Row-X) 不允许获得4、5、6级锁,允许获得2、3级锁;允许做DML操作,不允许做alter、drop、truncate操作。 Insert、Update、Delete、for update、ROW EXCLUSIVE
4 S(Share) 不允许获得3、5、6级锁,允许获得2、4级锁;不允许DML、DDL操作。 SHARE
5 SSX(S/Row-X) 不允许获得3、4、5、6级锁,允许获得2级锁;不允许DML、DDL操作。 SHARE ROW EXCLUSIVE
6 X(Exclusive) 不允许获得任何锁,不允许任何操作。 Alter、Drop、Truncate、EXCLUSIVE

【上篇】
【下篇】

抱歉!评论已关闭.