FOR UPDATE释放条件
1.数据库连接中断
2.程序停止
3.COMMIT
4.ROLLBACK
1.select * from ls.lims_employees where empno='0001' for update
只有当前用户能查看SELECT记录,其他用户可以select * from ls.lims_employees where empno='0001' 查询,但要加for update则必须等待前一个用户提交才能查
2.SELECT FOR UPDATE SKIP LOCKED选项是ORACLE的一个未公开的特性,它的含义是SELECT时跳过被锁的记录。
考虑下面的例子:
会话1:
SQL> select * from sex_dict ;
SERIAL_NOS SEX_INPUT_CO
---------- - ---- --------
1 1男 N
9 0未知 WZ
2 2女 N
4 9未定 WD
SQL> select * from sex_dict where serial_no = 1 for update ;
SERIAL_NOS SEX_INPUT_CO
---------- - ---- --------
1 1男 N
会话2:
查询并锁住serial_no in (1,2)的记录
SQL> select * from sex_dict where serial_no in ( 1, 2) for update ;
此时会话2挂住,直到会话1事务结束。