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

skip locked

2014年08月01日 ⁄ 综合 ⁄ 共 874字 ⁄ 字号 评论关闭

create table EMPLOYEE
(
  EMPID  INTEGER,
  DEPTID INTEGER,
  SALARY NUMBER(10,2)
);
insert into employee (EMPID, DEPTID, SALARY)
values (1, 10, 5500.00);

insert into employee (EMPID, DEPTID, SALARY)
values (2, 10, 4500.00);

insert into employee (EMPID, DEPTID, SALARY)
values (3, 20, 1900.00);

insert into employee (EMPID, DEPTID, SALARY)
values (4, 20, 4800.00);

insert into employee (EMPID, DEPTID, SALARY)
values (5, 40, 6500.00);

 commit;

session1:

    SQL> select * from employee where empid= 1 for update skip locked;
 
        EMPID         DEPTID            SALARY
            -----        --------        ------------
              1               10             5500.00

session2:

       SQL> select * from employee where empid= 1 for update skip locked;
 
        EMPID         DEPTID            SALARY
            -----        --------        ------------
    可以看到在session1有数据,原因是同一个SESSION的锁定可以重复获取;session2没有数据,原因是For Update Skip Locked发现记录被锁定, 则被筛选掉,且是在SQL查询结果集的基础上进行二次筛选。

    

抱歉!评论已关闭.