请任何人解释Oracle中的锁定模式,即共享、独占和更新锁。我发现了很多关于这个和那个的理论
共享锁:没有人可以更改数据,只读目的
专属锁:只允许一个用户/连接更改数据。
更新锁定:行被锁定,直到用户提交/回滚。
然后,我尝试了共享,以检查它是如何工作的
SQL> lock table emp in share mode;
Table(s) Locked.
SQL> update emp set sal=sal+10;
14 rows updated.
然后,我发现,用户可以改变数据后,共享锁定。那么,它与排他锁和更新锁有什么不同呢?
另一个问题,更新锁和排他锁有什么不同,即使它们看起来几乎是等同的。
2条答案
按热度按时间niwlg2el1#
共享锁
LOCK TABLE table IN SHARE MODE;
中指定的表上获取共享锁下表是一个很好的总结锁和什么是允许的。
这些信息的来源,也是关于Oracle锁的优秀阅读。
qyzbxkaa2#
在文档中有很好的解释。
在您的示例中,您在共享模式下锁定了表。这不会阻止其他会话在共享模式下锁定同一对象,但会阻止它们在独占模式下锁定该对象,以便在更新表(具有共享锁)时无法删除该表(需要独占锁)。