我可以使用纯SQL在我的数据库(Oracle)中拥有一个互斥表吗?

jju*_*uma 0 java sql oracle jdbc

我想在我的Oracle数据库中有一个表,其行作为锁.该表将有一列,一个varchar,我的客户端(基于JDBC的Java进程)将运行语句来获取和释放锁.

获取语​​句应该检查具有给定值的行的存在,如果不存在则插入.该语句应以某种方式向调用者发出信号,表明该行是否空闲.

release语句应该通过删除行来释放锁.

发布声明很简单,但我的获取声明应该是什么样的?

Jef*_*emp 5

我建议你DBMS_LOCK用于此目的.在引擎盖下,它几乎完成了你的建议.

DBMS_LOCK包

  • "如果两个进程都执行测试以检查锁定,找不到锁定,然后继续创建锁定,会发生什么".你不是那样写的.相反,如果你不能,你会尝试创建锁并捕获异常. (3认同)