Oracle建表触发ORA-00904:%s: invalid identifier错误原因咨询
报错原因
- 触发
ORA-00904: invalid identifier(无效标识符)错误的核心原因是你定义的列名01_ITEM违反了Oracle的标识符命名规则:Oracle要求所有自定义标识符(表名、列名、约束名等)必须以英文字母作为首字符,不能以数字、特殊符号开头。 - Oracle默认对不加双引号的标识符会自动转为大写处理,而首字符为数字的标识符不在规则允许范围内,因此SQL解析阶段就会判定为无效字符直接报错。
修复方案
方案1(推荐使用)
调整列名符合标准命名规范,例如把数字移到字母后方,修改后的建表语句如下:
create table tst(ITEM_01 varchar2(100) );
该方案后续对该表的所有操作都不需要额外处理,符合Oracle开发的通用规范。
方案2(不推荐使用)
如果业务必须保留01_ITEM的列名格式,可以用双引号强制包裹该列名,语句如下:
create table tst("01_ITEM" varchar2(100) );
注意:使用该方案后,后续所有涉及该列的操作都必须严格用双引号包裹列名,且大小写完全匹配,例如查询必须写为
select "01_ITEM" from tst;,省略双引号或者大小写不符都会再次触发无效标识符报错。
内容的提问来源于stack exchange,提问作者Rockey
相关产品推荐
相关产品推荐

