ORA-00907: отсутствует правая скобка
Это сообщение является одним из сообщений общего синтаксиса Oracle. Это означает, что наш SQL не будет компилироваться, потому что в операторе отсутствует пропущенное ключевое слово или запятая, или ключевое слово не на своем месте. В этом случае это объясняется тем, что компилятору не нравятся ваши встроенные предложения внешнего ключа.
Встроенные объявления внешнего ключа либо многословны с ключевыми словами CONSTRAINT и FOREIGN KEY, а также REFERENCES, либо лаконичны только с помощью REFERENCES.
На самом деле, если вы собираетесь использовать минималистскую нотацию, почему бы не пойти ва-банк? Эта строка ...
national_ID REFERENCES client
... создает внешний ключ для первичного ключа таблицы CLIENT и автоматически соответствует типу данных столбца ссылки.
Так что всенужно это ...
CREATE TABLE transaction_order
(
national_ID REFERENCES client ,
account_no REFERENCES account ,
transaction_ID REFERENCES transaction,
transaction_date DATE NOT NULL,
time NUMBER (10) NOT NULL,
place VARCHAR2 (20) NOT NULL,
new_balance VARCHAR2 (20) NOT NULL
);
Обратите внимание, я изменил имя transaction_date
: plain DATE - это зарезервированное ключевое слово Oracle, поэтому нам не разрешено использовать его в качестве идентификатора.
Возможно, вам необходимо сделать внешние ключи обязательными: внешний ключ сам по себе этого не сделает. Также, вероятно, вам нужно добавить ограничение первичного ключа.