Oracle 11g创建表报错‘invalid identifier’求助
解决Oracle 11g创建表时的"invalid identifier"错误
我帮你排查了下你创建表的SQL语句,发现两个关键问题导致了invalid identifier错误:
- 列名使用Oracle保留关键字:
START和END是Oracle的内置保留字,直接作为列名使用会触发标识符无效的错误。你需要用双引号将这两个列名包裹起来,明确告诉Oracle这是自定义的列名而非关键字。 - 主键定义后缺少分隔逗号:在
primary key (oID,dID)之后没有添加逗号,导致后续外键的语法结构混乱,这也会引发语法解析错误。
下面是修正后的完整创建语句:
create table ownership ( oID number not null, dID number not null, "START" date, "END" date, primary key (oID,dID), foreign key (oID) references owner(oID), foreign key (dID) references dogs(dID) );
另外提醒下,使用带双引号的列名时,后续查询这些列也需要保持双引号的大小写一致(比如必须写SELECT "START" FROM ownership,而不能用select start from ownership),如果不想这么麻烦,也可以把列名改成非关键字的名称,比如start_date和end_date,这样更符合数据库命名规范,也能避免这类问题。
内容的提问来源于stack exchange,提问作者user3390471
相关产品推荐
相关产品推荐

