我需要证明,如果两个事务在一个表上持有一个共享锁,则不能从最后取得锁的那个表中删除后者。
我该怎么做?
Share Table Locks (S)
自动为以下语句中指定的表获取共享表锁:
LOCK TABLE table IN SHARE MODE;
以下是允许的操作:
share table lock
仅允许其他交易
到SELECT
(查询表)声明成功。
其他交易不允许更新。多个事务可以同时持有同一表的共享表锁。在这种情况下,任何事务都无法更新该表(即使由于SELECT
的{{1}}语句而导致事务持有行锁)。因此,只有没有其他事务在同一表上也具有共享表锁的情况下,具有共享表锁的事务才可以更新表。
如果您想举个例子,可以参考以下链接:
http://oracledbascriptsfromajith.blogspot.com/2011/10/oracle-locking.html