当我创建这样一个表时:
CREATE TABLE "Movie_list" (
"Movie_id" NUMBER(8) NOT NULL,
"Company" VARCHAR2(30) NOT NULL,
"Rating" DECIMAL(5,1) NOT NULL,
"Storyline" VARCHAR2(255) NOT NULL,
"Award_id" VARCHAR2(255) NOT NULL,
"Cast_and_Crew_id" VARCHAR2(255) NOT NULL,
CONSTRAINT Movie_pk PRIMARY KEY (Movie_id),
);
生成错误报告-
SQL Error: ORA-00904: : invalid identifier
00904. 00000 - "%s: invalid identifier"
我看不出有什么问题,请帮忙。
3条答案
按热度按时间11dmarpk1#
错误:
gtlvzcf82#
主要问题存在于您的主键规范中,该规范如下
但是,在表定义中,您引用了该字段的名称,即
由于此字段的名称(以及表中的每个字段以及表本身的名称)都用引号括起来,因此数据库会将名称存储为指定的大小写混合名称,并且因为Oracle会将所有未加引号的标识符转换为UPPER_CASE,这意味着每次引用此表及其字段时,必须对它们进行引号。所以你的约束条件应该是
我的建议是去掉引号中的“大小写混合”名称。去掉引号,Oracle将在内部将名称存储在UPERPICE_CASE中。如果你愿意的话,你仍然可以用Mix_Case来引用它们,但你不需要“Quote_Them_Each_Time_You_Use_Them”,因为它会变得非常陈旧,读起来也很糟糕。我建议您将表定义更改为
祝你好运。
oipij1gg3#
当我试图使用某种关键字作为列名时,也会发生这种情况。我试图创建一个列名为“uid”的表(显然没有“”),结果收到以下错误:
ORA-00904::无效的标识符00904。00000-“%s:无效的标识符”
更改列的名称解决了该错误。