有個特殊場景,有人想用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