Странные проблемы при установке внешнего ключа - PullRequest
3 голосов
/ 28 июня 2011

База данных: Oracle 10.1 на ОС: xp2002

Я устанавливаю внешний ключ в таблице сотрудников, но я получаю сообщение об ошибке

нет соответствующего уникального или первичного ключа для этого списка столбцов

Я использую следующие запросы для создания таблиц.

Стол отдела:

create table department(
d_name  varchar2(10) not null,
d_no_of_employees number(4));

Таблица сотрудников:

create table employee(
e_id        number(4)       ,
e_name      varchar2(30)        not null,
e_f_name    varchar2(30)        not null,
e_desg      varchar2(20)        not null,
e_address   varchar2(50)        not null,
e_phone_no  number(12)      not null,
e_salary    number(10)      not null,
e_house_rent number(6)    not null,
e_conv_allow number(6)    not null,
e_email     varchar2(50)        not null    unique,
d2_name     varchar2(10)        not null,       
e_hire_month  number(2) not null,
e_hire_year  number(4) not null,
constraint e_id_pk primary key(e_id),
constraint d2_name_fk foreign key(d2_name) references department(d_name))
;

Любое решение, пожалуйста.

Ответы [ 3 ]

5 голосов
/ 28 июня 2011

внешний ключ должен быть первичным или уникальным ключом в другой таблице.

2 голосов
/ 28 июня 2011

Судя по тому, что вы опубликовали, у вас нет первичного ключа в таблице department. Что-то вроде:

create table department(
d_name  varchar2(10) not null,
d_no_of_employees number(4)
constraint department_pk primary key(d_name));

Или после создания:

alter table department
add constraint department_pk primary key(d_name)
...
2 голосов
/ 28 июня 2011

Сделайте d_name ПЕРВИЧНЫЙ КЛЮЧ из таблицы Отделов.

create table department(
d_name  varchar2(10) not null,
d_no_of_employees number(4),
constraint d_name_pk primary key(d_name));

А затем создайте таблицу Employee.

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