如何在SQL中创建引用

时间:2013-12-14 19:14:38

标签: sql oracle

HI朋友请帮帮我... 我的第一个表是创建成功,当我创建有关系的第二个表时,会发生此错误。

ORA-02270: no matching unique or primary key for this column-list
----------------------------------------------------------------- 
create table abc(
emp_id  number (10),
emp_cnic    number(20),
emp_name    varchar2(50),
primary key(emp_id,emp_cnic));

-----------------------------------------------------------------

create table xyz(
emp_id  number(10),
Att_date    date,
Flag        varchar2(1),
primary key(emp_id),
foreign key (emp_id) references abc(emp_id));

ORA-02270: no matching unique or primary key for this column-list

我想在第一个表中使用两个主键,在第二个表中使用外键。

2 个答案:

答案 0 :(得分:3)

外键必须引用唯一值(即另一个主键或在其上定义了唯一约束的一组列)。

emp_id表格中的

abc并非唯一 - 只有(emp_id, emp_cnic)的组合。因此,您无法使用xyz的外键引用它。

答案 1 :(得分:0)

外键关系应该在abc,而不是xyz

create table xyz (
  emp_id  number(10),
  Att_date    date,
  Flag        varchar2(1),
  primary key(emp_id)
);

create table abc (
  emp_id  number (10),
  emp_cnic    number(20),
  emp_name    varchar2(50),
  primary key(emp_id, emp_cnic),
  foreign key (emp_id) references xyz(emp_id)
);