求助:此列列表的唯一或主键不匹配
create table a 
( aid number(10) not null,
  aname varchar2(20) not null ,
  adate date check(adate>=to_date('2009-3-1','yyyy-mm-dd')),
  adesc varchar2(20) 
  )
  
create table b
( aid number(10) not null,
  bid number(10) not null,
  aname varchar2(20) not null,
  bname varchar2(20) not null,
  bdesc varchar2(20),
  primary key (aid,bid), 
  constraint fk_a_b foreign key(aid,aname) references a(aid,aname)) 结果ra-02270:此列列表的唯一或主键不匹配
请大家帮个忙,急

解决方案 »

  1.   

    A表没有定义主键create table a 
    ( aid number(10) not null, 
      aname varchar2(20) not null , 
      adate date check(adate>=to_date('2009-3-1','yyyy-mm-dd')), 
      adesc varchar2(20) ,
    constraint pk_a primary key (aid,aname)
      ) 
      
    create table b 
    ( aid number(10) not null, 
      bid number(10) not null, 
      aname varchar2(20) not null, 
      bname varchar2(20) not null, 
      bdesc varchar2(20), 
      primary key (aid,bid), 
      constraint fk_a_b foreign key(aid,aname) references a(aid,aname)) 
      

  2.   

    因为a表的aid,aname没有设置复合主键,所以会报ra-02270:此列列表的唯一或主键不匹配
    如果你要设置a表aid和aname为联合主键的话,可以将脚本修改如下:create table a 
    ( aid number(10) not null, 
      aname varchar2(20) not null , 
      adate date check(adate>=to_date('2009-3-1','yyyy-mm-dd')), 
      adesc varchar2(20),
      constraint PK1 primary key (AID, ANAME) 
      ) ;
      
    create table b 
    ( aid number(10) not null, 
      bid number(10) not null, 
      aname varchar2(20) not null, 
      bname varchar2(20) not null, 
      bdesc varchar2(20), 
      primary key (aid,bid), 
      constraint fk_a_b foreign key(aid,aname) references a(aid,aname)) ;