Oracle - нет соответствующего уникального или первичного ключа для этого списка столбцов - PullRequest
0 голосов
/ 01 ноября 2018

Хорошо, извините, если мой код не в лучшем формате. Я получаю сообщение об ошибке при попытке создать вторую таблицу. Я получаю эту ошибку: ORA-02270: нет соответствующего уникального или первичного ключа для этого списка столбцов. Я прочитал другие посты, и я запутался в том, что не так с моими внешними ключами. Внешними ключами в E_T являются D_ID и SP_ID. D_id ссылается на таблицу d_t, а SP_ID ссылается на таблицу e_t, поскольку это унарные отношения с E_ID. Я считаю, что это идентификатор сотрудника и руководителя. Типы данных FK и PK совпадают.

CREATE TABLE  D_T
(
     D_ID   INTEGER NOT NULL,
     D_Name VARCHAR(45),

     CONSTRAINT D_T_PK PRIMARY KEY (D_ID)
);

CREATE TABLE E_T
(
     E_ID   INTEGER NOT NULL,
     E_Name VARCHAR(45),
     D_ID   INTEGER,
     Salary INTEGER,
     SP_ID  INTEGER,

     CONSTRAINT E_T_PK PRIMARY KEY (E_ID),
     CONSTRAINT E_T_FK1 FOREIGN KEY (D_ID) REFERENCES D_T(D_ID),
     CONSTRAINT E_T_FK2 FOREIGN KEY (SP_ID) REFERENCES E_T(SP_ID)
);

Хотелось бы отметить, что на сервере Oracle - в строках 13 и 14 моего скрипта слово "KEY" не выделено синим цветом. Я не уверен, что это важно.

1 Ответ

0 голосов
/ 01 ноября 2018

Вы ссылаетесь не на тот столбец для самостоятельной ссылки. Поэтому вторая таблица должна выглядеть примерно так:

CREATE TABLE E_T (
 E_ID    INTEGER NOT NULL PRIMARY KEY,
 E_Name    VARCHAR(45),
 D_ID    INTEGER,
 Salary    INTEGER,
 SP_ID    INTEGER,
 CONSTRAINT E_T_FK1 FOREIGN KEY (D_ID) REFERENCES D_T(D_ID),
 CONSTRAINT E_T_FK2 FOREIGN KEY (SP_ID) REFERENCES E_T(E_ID)
-------------------------------------------------------^
)
...