You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Oracle创建CUSTOMER表时遭遇ORA-00902无效数据类型错误求助

解决Oracle ORA-00902: invalid datatype 错误

嘿,我一眼就瞅出你这个CREATE TABLE语句里的几个语法问题,正是它们导致了ORA-00902错误。咱们一步步来拆解修复:

错误点分析

  • 数据类型语法错误:你定义Number_adopted的时候写成了(number) (1),这完全不符合Oracle的语法规范。正确的Oracle数字类型写法应该是NUMBER(1),直接把精度放在类型名后面的括号里就行,不用额外嵌套括号。
  • 约束之间缺少分隔符:多个约束(主键、唯一约束、检查约束)之间必须用逗号分隔,你原语句里主键约束"CUSTOMER_PK"后面直接接constraint "Email_uni",没有逗号,Oracle会识别不了后续的约束定义。
  • USING INDEX 位置错误USING INDEX是用来配置主键或唯一约束对应的索引的,它应该紧跟在对应的约束定义后面。你把它放在所有约束的最后,这会让Oracle误以为是无效的语法部分。

修正后的完整CREATE TABLE语句

CREATE TABLE "CUSTOMER" (
    "CUS_ID" VARCHAR2(9),
    "CUSTOMER_NAME" VARCHAR2(30),
    "EMAIL" VARCHAR2(30),
    "BIRTH_DATE" DATE,
    "Mobile_number" NUMBER(10),
    "Number_adopted" NUMBER(1),
    CONSTRAINT "CUSTOMER_PK" PRIMARY KEY ("CUS_ID") USING INDEX ENABLE,
    CONSTRAINT "Email_uni" UNIQUE ("EMAIL"),
    CONSTRAINT "Mobile_uni" UNIQUE ("Mobile_number"),
    CONSTRAINT "adopted_range_ck" CHECK ("Number_adopted" >= 1 AND "Number_adopted" <= 4)
);

额外说明

我把USING INDEX ENABLE移到了主键约束的后面,这才是它正确的位置;同时给所有约束之间加上了逗号分隔,修正了Number_adopted的数据类型写法。现在执行这个语句应该就能成功创建CUSTOMER表了。

内容的提问来源于stack exchange,提问作者Fido Dido

火山引擎 最新活动