Oracle中序列(Sequence)作为默认值引发的ORA-00979错误详解
当我们将seq.NEXTVAL设置为列的默认值时,Oracle在执行INSERT INTO ... SELECT ...语句时会进行查询转换。即使我们显式地为ID字段提供了值(或依赖默认值),Oracle在优化执行计划的过程中,可能会将序列的求值提前或转换,导致它出现在包含GROUP BY的查询上下文中,从而触发了这个限制。
简单来说:默认值的设置改变了Oracle对SQL语句的解析和执行计划生成方式,使得原本合法的SQL变得不合法。