Ваш синтаксис выглядит нормально. Вы не показываете DDL для ссылочных таблиц PATIENT
и DOCTOR
, однако вполне вероятно, что ошибка происходит из-за того, что одно из требований внешних ключей MySQL не выполнено.
Цитаты из документации :
Соответствующие столбцы во внешнем ключе и ссылочном ключе должны иметь одинаковые типы данных.
blockquote>Вы должны убедиться, что
DOCTOR(DNo)
иPATIENT(PNo)
равныVARCHAR(5)
.MySQL требует индексов для внешних ключей и ссылочных ключей. [...] Такой индекс создается в ссылочной таблице автоматически, если он не существует.
blockquote>В идеале,
DOCTOR(DNo)
иPATIENT(PNo)
должны быть первичным ключом их соответствующих таблиц. Иначе, индекс должен существовать для каждого из них (это может быть индекс из нескольких столбцов, в котором упомянутый столбец появляется один раз).См. эту скрипту дБ для рабочего примера:
CREATE TABLE PATIENT(PNo VARCHAR(5) PRIMARY KEY); CREATE TABLE DOCTOR(DNo VARCHAR(5) PRIMARY KEY); CREATE TABLE APPOINTMENT( APNo VARCHAR(5), PNo VARCHAR(5), DNo VARCHAR(5), APDATE DATETIME ); ALTER TABLE APPOINTMENT ADD PRIMARY KEY (APNo), ADD FOREIGN KEY (PNo) REFERENCES PATIENT(PNo), ADD FOREIGN KEY (DNo) REFERENCES DOCTOR(DNo) ;
select value from v$parameter where name = 'background_dump_dest'
Используя ответ cagcowboy , значение по умолчанию установка Oracle XE на Linux выписывает к:
/usr/lib/oracle/xe/app/oracle/admin/XE/bdump