首页 > 解决方案 > 未创建 SQL 表

问题描述

我正在使用甲骨文。

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")
     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
   );

我越来越:

ORA-00902: 无效的数据类型

同样在此表中:

CREATE TABLE  "ANIMAL" 
   (    "ANIMAL_ID" VARCHAR2(9), 
    "ANIMAL_NAME" VARCHAR2(30),
    "AGE" NUMBER(2),
    "ANIMAL_TYPE" VARCHAR2(30),
    "EXPENCES" NUMBER (10),
    "ADOPTED" VARCHAR2(9),

     CONSTRAINT "ANIMAL_PK" PRIMARY KEY ("ANIMAL_ID")
     CONSTRAINT "ANIMAL_EXP_ck check" ( EXPENCES >=1 and EXPENCES<=1000)
     CONSTRAINT "ANIMAL_AGE_ck check" ( AGE >=1)
  USING INDEX  ENABLE
   );

我收到缺少右括号错误,但我无法解决这个问题。

标签: sqloraclecreate-table

解决方案


你有一个;after "Number_adopted" (number) (1),这里的括号number也是错误的。那么你已经忘记,了约束之后。如果您"在名称周围定义了一个列并且名称不是全部大写,则各个字符的大小写必须在进一步的引用中匹配,并且这些也必须包含在". 这就是为什么您constraint "Mobile_uni" unique (Mobile_number)必须更改为constraint "Mobile_uni" unique ("Mobile_number"). (但您可能首先要修改它并让列名全部大写。经验告诉我,这样的事情是未来的陷阱,因为您必须在任何查询等中准确使用该名称,它是很难注意到让一个人想知道为什么事情不起作用。)USING INDEX ENABLE我猜那是放错地方了。

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), -- delete ( ) ; add ,
     CONSTRAINT "CUSTOMER_PK" PRIMARY KEY ("CUS_ID") USING INDEX  ENABLE, --  add ,
     constraint "Email_uni" unique (EMAIL), --  add ,
     constraint "Mobile_uni" unique ("Mobile_number"), -- add ,  " "
     constraint "adopted_range_ck" check ( "Number_adopted" >=1 and "Number_adopted"<=4) -- move USING INDEX  ENABLE add " "
   );

在第二个中,您也忘记,了约束之后并且USING INDEX ENABLE放错了位置。您还放错了"检查约束并CHECK意外地将关键字包含在其中。

CREATE TABLE  "ANIMAL" 
   (    "ANIMAL_ID" VARCHAR2(9), 
    "ANIMAL_NAME" VARCHAR2(30),
    "AGE" NUMBER(2),
    "ANIMAL_TYPE" VARCHAR2(30),
    "EXPENCES" NUMBER (10),
    "ADOPTED" VARCHAR2(9),

     CONSTRAINT "ANIMAL_PK" PRIMARY KEY ("ANIMAL_ID") USING INDEX  ENABLE, -- add ,
     CONSTRAINT "ANIMAL_EXP_ck" check ( EXPENCES >=1 and EXPENCES<=1000), -- add , move "
     CONSTRAINT "ANIMAL_AGE_ck" check ( AGE >=1) -- move "
  -- move USING INDEX  ENABLE
   );

推荐阅读