sql中的for update是什么?

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#.

猜你喜欢

转载自blog.csdn.net/gogletech/article/details/80534418
今日推荐