设置外键时出现奇怪的问题

时间:2011-06-28 15:11:36

标签: sql oracle

数据库:os:xp2002上的Oracle 10.1

我在employee表中设置了外键,但是我收到错误

  

此列列表没有匹配的唯一键或主键

我正在使用以下查询来创建表。

部门表:

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 个答案:

答案 0 :(得分:5)

外键必须是另一个表中的主键或唯一键。

答案 1 :(得分:2)

创建部门表的d_name PRIMARY KEY。

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

然后创建Employee表。

答案 2 :(得分:2)

根据您发布的内容,您似乎没有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)
...