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

Does unlocking shared lock in one transaction depend on the shared lock that is given after that in another transaction?

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

我该怎么做?

Share Table Locks (S)

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

LOCK TABLE table IN SHARE MODE;

以下是允许的操作:

  • 一个交易持有的share table lock只允许其他交易 to SELECT(查询table)
  • 使用 SELECT 锁定特定行 ... FOR UPDATE
  • 或执行锁定TABLE ...在共享模式下

声明成功。

其他事务不允许更新。多个事务可以同时持有同一个 table 的共享 table 锁。在这种情况下,没有事务可以更新 table(即使事务持有行锁作为 SELECT 语句和 FOR UPDATE clause 的结果)。因此,只有当没有其他事务在同一 table.[=17= 上也具有共享 table 锁时,具有共享 table 锁的事务才能更新 table ]

如果你想要一个例子,你可以参考下面link:

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