带子查询的SQL语句怎么实现for update

xuanyuanyilu xuanyuanyilu 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
有俩张表A,B,A为主表,B为子表,是1对多的关系。
需求是在A中搜出前 上限1000条 未处理 的数据和对应的子表数据,然后将主表状态改成 处理中,处理好后再将状态改成处理完成,这个过程中需要用for update来锁表。

我的sql语句思路是:

SELECT m.*,s.* FROM (
SELECT * FROM TBL_MAIN WHERE DEAL_FLAG = '0' and rownum<1001
)m

, TBL_SUB s
where m.id=s.id (for update of s.id)

括号内是我想锁表实现的地方,但由于存在子查询,所以不能锁主表,而现在这个锁子表又没什么用。
高人在哪里?

顺便说下另一种思路,就是分俩次来查,先查主表,然后根据差得的数据for循环再来查子表,这个耗费太大,实在没有办法时才考虑,暂时不采用。
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
xuanyuanyilu
基础和管理 17,379 成员 95,111 内容