我正在尝试使用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 - “缺少右括号” *原因:
*操作:
请帮忙!
答案 0 :(得分:2)
您的外键应该引用另一个表上的另一列。
Here is the documentation you need to fix your issue(如何使用正确的外键语法编写查询)
此外,将列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)
);