【Oracle/错误码】select max(id) from emp for update 是锁行还是锁表?结果爆ORA-01786错误: 此查询表达式不允许 FOR UPDATE

有个特殊场景,有人想用select max(id)+1 from emp for update 得到新ID,当时还未执行此句,一群人针对此语句是锁行还是锁表争论了一会,准备做个实验验证一下,结果出现ORA-01786错误:

SQL> select max(id) from emp for update;
select max(id) from emp for update
                        *1 行出现错误:
ORA-01786: 此查询表达式不允许 FOR UPDATE


SQL> select max(id)+1 from emp for update;
select max(id)+1 from emp for update
                          *1 行出现错误:
ORA-01786: 此查询表达式不允许 FOR UPDATE

看来Oracle对此早有准备,对于聚组函数(集计函数)的查询不允许跟 for update。

END

posted @ 2021-10-14 18:39  逆火狂飙  阅读(1174)  评论(0编辑  收藏  举报
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东