2013-08-25 2 views
0

Я пытаюсь создать таблицу с внешним ключом с помощью oracle. Мой следующий синтаксисOracle Create TABLE

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

я получил ошибку, говоря

Error at Command Line:2 Column:14 Error report: SQL Error: ORA-00907: missing right parenthesis 00907. 00000 - "missing right parenthesis" *Cause:
*Action:

Пожалуйста, помогите!

+3

Ваш внешний ключ кажется совершенно недостаточным. – Mat

ответ

2

Ваш внешний ключ должен повторить другой столбец на другом столе.

  1. Here is the documentation you need to fix your issue (как написать запрос с правильным синтаксисом для внешнего ключа)

  2. Кроме того, изменить тип данных для столбца PRODUCT_PRICE из DOULBE(4) в NUMBER(12,4).

+0

Он использует базу данных Oracle, а не Oracle MySQL. –

+0

уже пробовал !! еще одна ошибка – user2714726

+0

@ user2714726 Какая еще ошибка? –

0

Вы не должны использовать предел для типа int ... oracle примет длину по умолчанию для типа int. Вместо int вы можете использовать тип Number, чтобы он запускался. И DOUBLE PRECISION - это тип данных в оракуле, но 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) 
);