Oracle SQL 00904。00000-“百分比”s:无效标识符“;创建表时
当我创建这样的表时:Oracle SQL 00904。00000-“百分比”s:无效标识符“;创建表时,oracle,Oracle,当我创建这样的表时: 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"
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"
我看没什么问题,请帮忙 错误:
- 用引号括起来的表名和列名
- NUMBER和VARCHAR2不是有效的mysql类型
- A位于约束规范的末尾,该约束规范无效
CONSTRAINT Movie_pk PRIMARY KEY (Movie_id),
但是,在表定义中,您引用了此字段的名称,即
"Movie_id" NUMBER(8) NOT NULL,
由于该字段的名称(事实上,表中的每个字段以及表本身的名称)都是带引号的,因此数据库将这些名称存储为指定的混合大小写名称,并且由于Oracle将所有未带引号的标识符转换为大写字母,这意味着每次引用该表及其字段时,你必须引用它们。所以你的约束应该是
CONSTRAINT Movie_pk PRIMARY KEY ("Movie_id")
我的建议是,你不用引用“混合案例”名称。去掉引号,Oracle将在内部以大写字母存储名称。如果你想的话,你仍然可以使用混合格来引用它们,但你不必“每次使用时都引用”,这会变得非常陈旧,而且读起来非常糟糕。我建议您将表定义更改为
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)
);
祝你好运。请用RTFM!您不必在引号之间包装表名和列名。我正在Oracle SQL developer中运行它,错误报告-SQL错误:ORA-00907:缺少右括号00907。00000-“缺少右括号”*原因:*操作:然后使用oracle标记