在一个事务中解锁共享锁是否取决于在另一个事务中之后给出的共享锁?

我需要证明,如果两个事务在一个表上持有一个共享锁,则不能从最后取得锁的那个表中删除后者。

我该怎么做?

spacerubbish 回答:在一个事务中解锁共享锁是否取决于在另一个事务中之后给出的共享锁?

Share Table Locks (S)

自动为以下语句中指定的表获取共享表锁:

LOCK TABLE table IN SHARE MODE;

以下是允许的操作:

  • 某笔交易持有的share table lock仅允许其他交易 到SELECT(查询表)
  • 使用SELECT ... FOR UPDATE锁定特定行
  • 或在共享模式下执行LOCK TABLE ...

声明成功。

其他交易不允许更新。多个事务可以同时持有同一表的共享表锁。在这种情况下,任何事务都无法更新该表(即使由于SELECT的{​​{1}}语句而导致事务持有行锁)。因此,只有没有其他事务在同一表上也具有共享表锁的情况下,具有共享表锁的事务才可以更新表。

如果您想举个例子,可以参考以下链接:

http://oracledbascriptsfromajith.blogspot.com/2011/10/oracle-locking.html

本文链接:https://www.f2er.com/3095572.html

大家都在问