0

我正在使用 Oracle 数据库(11g 第 2 版)。想象多个连接同时执行以下操作:

  1. 开始交易
  2. 检查唯一值表中是否存在特定值
  3. 如果该值不存在,则插入它
  4. 提交事务

在我看来,防止冲突的唯一方法是阻止连接执行上述 4 步序列,而任何其他连接当前正在执行 4 步序列。

事务可以在 Oracle 中实现这种广泛的锁定/阻塞吗?

提前感谢您对如何最好地处理这种情况的回答和建议。

4

1 回答 1

1

添加唯一检查约束,并实现异常处理程序以获取下一个序列并重试。

这是假设您使用的是 pl/sql。

另一种方法是使用缓存大小为 1 的 Oracle 序列。这也将确保序列中没有间隙 2. SELECT * FROM table_name FOR UPDATE 以阻止来自其他会话的所有读取...

于 2014-09-22T04:02:47.470 回答