Oracle Create TABLE

时间:2013-08-25 10:33:28

标签: oracle ddl

我正在尝试使用oracle创建一个包含外键的表。我的语法如下

CREATE TABLE product (
   product_id       INT(7) NOT NULL,
   supplier_id      INT(7) NOT NULL,
   product_name     VARCHAR2(30),
   product_price    DOUBLE(4),
   product_category VARCHAR2(30),
   product_brand    VARCHAR2(20),
   product_expire   DATE,
   PRIMARY KEY (product_id),
   FOREIGN KEY (supplier_id)
)

我收到了一个错误,说

  

命令行错误:2列:14错误报告:SQL错误:ORA-00907:   缺少右括号   00907. 00000 - “缺少右括号”   *原因:
  *操作:

请帮忙!

3 个答案:

答案 0 :(得分:2)

您的外键应该引用另一个表上的另一列。

  1. Here is the documentation you need to fix your issue(如何使用正确的外键语法编写查询)

  2. 此外,将列product_price的数据类型从DOULBE(4)更改为NUMBER(12,4)

答案 1 :(得分:1)

您创建类似于外键引用的父表,这是创建外键的正确语法

CREATE TABLE product(
   product_id       number(7) NOT NULL,
   supplier_id      number(7) NOT NULL,
   product_name     VARCHAR(30),
   product_price    DOUBLE PRECISION,
   product_category VARCHAR(30),
   product_brand    VARCHAR(20),
   product_expire   DATE,
   PRIMARY KEY (product_id),
   FOREIGN KEY (supplier_id)
    REFERENCES parent_table (supplier_id)
);

答案 2 :(得分:0)

你不应该对int类型使用limit ... oracle将采用int类型的默认长度。 您可以使用数字类型来运行,而不是int。而DOUBLE PRECISION是oracle中的数据类型,但Double不存在。此外,外键的语法是错误的。 所以这个查询肯定会起作用:

CREATE TABLE product(
   product_id       number(7) NOT NULL,
   supplier_id      number(7) NOT NULL,
   product_name     VARCHAR2(30),
   product_price    DOUBLE PRECISION,
   product_category VARCHAR2(30),
   product_brand    VARCHAR2(20),
   product_expire   DATE,
   PRIMARY KEY (product_id),
   FOREIGN KEY (supplier_id)
    REFERENCES parent_table (supplier_id)
);