Отсутствует ключевое слово в коде SQL для внешних ключей, которые не могут создать таблицу - PullRequest
1 голос
/ 02 апреля 2019

Попытка создать таблицу с кодом SQL, но я получаю сообщение об ошибке:

Отсутствует ключевое слово

в отношении внешнего ключа.

CREATE TABLE Staff 
(
    staffID VARCHAR(5) NOT NULL,
    name VARCHAR(50), 
    position VARCHAR(30),
    branchID VARCHAR(5),
    PRIMARY KEY (staffID),
    FOREIGN KEY (branchID) REFERENCES Branch ON UPDATE CASCADE
);

1 Ответ

1 голос
/ 02 апреля 2019

В отличие от других СУБД (например, MySQL), Oracle не поддерживает предложение ON UPDATE во внешних ключах. Вам просто нужно удалить эту часть декларации.

Попробуйте:

CREATE TABLE Staff (
    staffID VARCHAR(5) NOT NULL,
    name VARCHAR(50), 
    position VARCHAR(30),
    branchID VARCHAR(5),
    PRIMARY KEY (staffID),
    FOREIGN KEY (branchID) REFERENCES Branch(branchID) --ON UPDATE CASCADE
);

Демонстрация на DB Fiddle

Логика, лежащая в основе этого поведения Oracle, заключается в том, что указанный столбец не должен изменяться, поскольку он должен быть PRIMARY KEY (или столбец UNIQUE). Я считаю, что это ограничение имеет смысл ... они просто не хотят давать пользователям достаточно веревки, чтобы повеситься.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...