SHARE模式下的LOCK表不会阻止客户端

时间:2015-11-02 11:56:39

标签: db2

基于https://www-01.ibm.com/support/knowledgecenter/SSEPEK_10.0.0/com.ibm.db2z10.doc.sqlref/src/tpc/db2z_sql_locktable.dita的文档 SHARE MODE锁可以防止其他进程执行除桌面上的只读操作之外的任何操作。

我们尝试了以下方法: 处理1(P1):SHARE MODE中的LOCK表T1。 P2:SHARE MODE中的LOCK表T1。

由于P1首先获得锁定,我们期待P2被锁定以释放锁定。相反,该声明成功为P2。

这是否与文档中的陈述不冲突?

我们有两个相同的程序P1和P2,并希望确保其中只有一个有机会一次在表中插入记录。我们希望每个流程都:

1.以共享模式锁定表格

2.插入记录

3.Commit

还有其他方法可以达到这个目的吗?

此致

佳日

1 个答案:

答案 0 :(得分:3)

两个SHARE锁是兼容的,即只要两个程序/事务只尝试读取它们就可以继续。 P1在表T1上获得EXCLUSIVE锁后,其他事务无法继续。此外,如果P1在T1上有SHARE锁,那么P2在请求EXCLUSIVE锁时需要等待。

一般情况下,如果可能的话,我会尽量避免使用LOCK TABLE。您是否有其他选项来同步两个程序的工作?