oracle行锁select for update

Posted stono

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle行锁select for update相关的知识,希望对你有一定的参考价值。

oracle行锁select for update

学习了:https://blog.csdn.net/zdwzzu2006/article/details/50490157

学习了:https://blog.csdn.net/liqfyiyi/article/details/7948282

 

statement: 一个SQL语句。 

session: 一个由ORACLE用户产生的连接,一个用户能产生多个SESSION ,但相互之间是独立的。 

transaction:所有的改动都能划分到transaction里,一个transaction包含一个或多个SQL。当一个SESSION建立的时候就是个TRANSACTION开始的时刻,此后transaction的开始和结束由DCL控制,也就是每个COMMIT/ROLLBACK都标示着一个transaction的结束。 

consistency:是对于statement级别而不是transaction级别来说的。sql statement 得到的数据都是以sql statement开始的IMAGE。 

用法介绍:
update, insert ,delete, select ... for update会LOCK相应的ROW 。 
只有一个TRANSACTION可以LOCK相应的行,也就是说如果一个ROW已经LOCKED了,那就不能被其他TRANSACTION所LOCK了。 

LOCK由statement产生但却由TRANSACTION结尾(commit,rollback),也就是说一个SQL完成后LOCK还会存在,只有在COMMIT/ROLLBACK后才会师释放。

 

以上是关于oracle行锁select for update的主要内容,如果未能解决你的问题,请参考以下文章

数据库中Select For update语句的解析

mysql的行锁与表锁(select* .... FOR UPDATE)

mysql 多列唯一索引在事务中select for update是否行锁

select for update是行锁还是表锁,还真得看情况

mysql的行锁与表锁(select* .... FOR UPDATE)

面试官问:select......for update会锁表还是锁行?