В Oracle, как очистить отсутствующую скобку? - PullRequest
0 голосов
/ 25 мая 2019
CREATE TABLE Bill( 
    BillNo INTEGER PRIMARY KEY,
    StoreName VARCHAR2(20) FOREIGN KEY,
    Shopperid INTEGER FOREIGN KEY,
    ArCode CHAR(5) FOREIGN KEY,
    Amount INTEGER,
    BillDate DATE,
    Quantity NUMBER(4) Default 1 Check (Quantity>0)
);

У меня ошибка с отсутствующим парантезом. Кто-нибудь поможет мне с кодом?

Ответы [ 2 ]

1 голос
/ 25 мая 2019

Ошибка в MySQL:

У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с 'VARCHAR2 (20) FOREIGN KEY, Shopperid INTEGER FOREIGN KEY, ArCode CHAR (5) 'в строке 3

С другой стороны, ошибка в Oracle:

ORA-00907: отсутствует правая скобка

Следовательно, я заключаю, что вы используете Oracle. Исправление заключается в удалении ссылок на внешний ключ:

CREATE TABLE Bill ( 
    BillNo INTEGER PRIMARY KEY,
    StoreName VARCHAR2(20) ,
    Shopperid INTEGER,
    ArCode CHAR(5),
    Amount INTEGER,
    BillDate DATE,
    Quantity NUMBER(4) Default 1 Check (Quantity>0)
);

Если вам нужны ссылки на внешние ключи, они могут выглядеть следующим образом:

CREATE TABLE Bills ( 
    BillNo INTEGER PRIMARY KEY,
    StoreName FOREIGN KEY REFERENCES Stores(StoreName),
    Shopperid FOREIGN KEY REFERENCES Shoppers(ShopperId),
    ArCode REFERENCES ArCodes(ArCode),
    Amount INTEGER,
    BillDate DATE,
    Quantity NUMBER(4) Default 1 Check (Quantity>0)
);
0 голосов
/ 25 мая 2019
  1. В MySQL нет varchar2. используйте varchar
  2. Нет number. Используйте Decimal
  3. Для внешних ключей необходимо указать условие references, чтобы точно указать, к чему этот столбец относится к внешнему ключу.
  4. Запятая перед Check

Это работает.

CREATE TABLE Bill( 
    BillNo INTEGER PRIMARY KEY,
    StoreName VARCHAR(20),
    Shopperid INTEGER,
    ArCode CHAR(5),
    Amount INTEGER,
    BillDate DATE,
    Quantity decimal(4) Default 1,
    Check (Quantity>0)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...