CREATE TABLE с внешним ключом завершается неудачно с ORA-00905: отсутствует ключевое слово - PullRequest
0 голосов
/ 21 сентября 2019

Всякий раз, когда я пытаюсь сослаться на внешний ключ, я получаю эту ошибку (отсутствует ключевое слово). Вот мой код:

CREATE TABLE SP (
  S# CHAR(2) NOT NULL,
  P# CHAR(2) NOT NULL,
  QTY INTEGER,
  PRIMARY KEY (S#,P#),
  FOREIGN KEY (S#) REFERENCE Supplier(S#) ON DELETE CASCADE
);

1 Ответ

1 голос
/ 21 сентября 2019

Есть несколько проблем с вашим кодом:

  • неправильный синтаксис определения вашего первичного ключа;в определении внешнего ключа должно быть CONSTRAINT <constraint_name> PRIMARY KEY (S#, P#)

  • , в ключевом слове REFERENCES отсутствует окончательный S

Рассмотрим:

CREATE TABLE SP (
  S# CHAR(2) NOT NULL,
  P# CHAR(2) NOT NULL,
  QTY INTEGER,
  CONSTRAINT SP_PK PRIMARY KEY (S#, P#),
  FOREIGN KEY (S#) REFERENCES Supplier(S#) ON DELETE CASCADE
);

Демонстрация на скрипте БД

Напоминание: обратите внимание, что столбец, на который ссылается первичный ключ, должен быть уникальным или первичнымвведите ссылочную таблицу (т. е. столбец S# должен быть первичным ключом таблицы Supplier или иметь ограничение UNIQUE).

...