1、for update功能
就是一个行级锁。
借助for update子句,我们可以在应用程序的层面手工实现数据加锁保护操作(防止多线程的情况下出现问题)
如:select * from 表名 for update,就可以把查询出来的数据进行加锁控制,别人就无法查询更新了。
2、for update加锁后如何解锁呢?
- 如果是你自己锁的,rollback或者commit都能解锁;
- 如果是别人锁的,那么下面三步进行解锁:
3、别人锁定后的解锁步骤
1,查看哪个表被锁
select b.owner,b.object_name,a.session_id,a.locked_mode
from v$locked_object a,dba_objects b
where b.object_id = a.object_id;
2,查看是哪个session引起的
select b.username,b.sid,b.serial#,logon_time
from v$locked_object a,v$session b
where a.session_id = b.sid order by b.logon_time;
3,杀掉对应进程
执行命令:alter system kill session'1025,41';
其中1025为sid,41为serial#.