java - 在 Oracle 12c 中实现读锁的任何方法?
问题描述
我正在访问 Oracle 12C 中的表以从表中生成唯一参考编号并将下一个编号更新到同一行。同时,超过 3 个应用程序正在访问同一个表以获取参考编号。当我使用查询访问连接时,有什么方法可以锁定表的读取。我尝试了以下查询。
LOCK TABLE UPS_HDR_SEQ IN SHARE ROW EXCLUSIVE MODE;
select max(SEQN) From UPS_HDR_SEQ where SRV_ID=?;
但它只允许用户在提交事务期间锁定连接。在此期间,任何其他应用程序都可以读取数据并获取参考编号。在这种情况下,其他应用程序也可以获得与我的参考号相同的参考号。是否可以使用查询实现表的读锁?
解决方案
查看select for update of的文档。这会在您选择时锁定该行。当然,您需要立即进行更新。
推荐阅读
- spring-batch - 弹簧分区未按预期执行
- css - 渐变动画 - 防止“跳过”
- node.js - Express.js 中间件为上面定义的路由执行
- c - 当 char 数组从字符串文字初始化时会发生什么?
- c - 在 Clang-Query 中匹配函数指针
- webpack - 是否可以更改 Webpack-dev-server 的根 URL
- reactjs - 获取不是子组件的组件以接收来自另一个组件的道具
- ios - CNContactViewController 弹出前出现意外图标
- gitlab - 如何将 repo 从项目移动到子项目中?
- php - 浏览器中的哈希、cookie 和数据库中的存储不起作用