请任何人解释Oracle中的锁定模式,即共享,独占和更新锁定。我发现了很多这方面的理论,并根据那个
共享锁定:没有人可以更改数据,只读目的
独占锁定:只允许一个用户/连接更改数据。
更新锁:行被锁定,直到用户提交/回滚。
然后,我尝试使用共享来检查它是如何工作的
SQL> lock table emp in share mode;
Table(s) Locked.
SQL> update emp set sal=sal+10;
14 rows updated.
然后,我发现,用户可以在共享锁定后更改数据。然后,它与独占锁和更新锁不同。
另一个问题,更新锁和独占锁如何彼此不同,即使它们看起来几乎相同。
答案 0 :(得分:9)
为将来的访问者发布解释,并提供答案。
LOCK TABLE table IN SHARE MODE;
下表是对锁的一个很好的总结以及允许的内容。
<小时/> 由于很多用户都会关注这个问题所以我决定再往前走一步并提出我的学习笔记,我希望大家能从中受益:
<小时/> Source of this information and also excellent reading about Oracle locks。
答案 1 :(得分:1)
在文档中对此进行了很好的解释:http://docs.oracle.com/cd/E11882_01/server.112/e41084/ap_locks001.htm#SQLRF55502
在您的示例中,您以共享模式锁定了表。这不会阻止其他会话在共享模式下锁定同一个对象,但它确实阻止它们以独占模式锁定它,因此您在更新时不能删除表(这需要一个独占锁)(具有共享锁) )。