【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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM