create table Course(Id char(8),Num int, 
Room_Num char(10), week char(10), Time int,
primary key (Id, Num));
上面是新建的Course表,Id是课程号,Num是课序号;我想在下面的表中设置外键约束,Course_Id是参照Course的Id的一个约束关系
create table Course_Limited(Course_Id char(8),
Limited_Grade char(5), Limited_Num int, Limited_Major char(20), 
Credit float, Name char(20),
primary key (Course_Id));各位给帮帮忙!!

解决方案 »

  1.   

    要建立外键约束的话,被引用的表的列一定要是那张表的primary key or unique key.
    Course表的Id虽然和num构成了联合primary key,但是id列不是primary key,id列可能会发生重复。所以肯定是建不成外键的。
      

  2.   

    如果Course表里id惟一的话create table Course_Limited(
    Course_Id char(8), 
    Limited_Grade char(5), Limited_Num int, Limited_Major char(20), 
    Credit float, Name char(20), 
    primary key (Course_Id),
    foreign key (Course_Id) references Course(id)
    );
      

  3.   

    应该一个表的主键才有可能被另外一个表的外键reference吧?unique key应该不可以。
      

  4.   

    create table Course_Limited(Course_Id char(8), 
    Limited_Grade char(5), Limited_Num int, Limited_Major char(20), 
    Credit float, Name char(20), 
    primary key (Course_Id)); alter table Course_Limited add constraints FK_Course_Limited2Course_ID foreign key(Course_Id) references Course(id);course表的(id)必须是primary key或者是unique key。==================================================================
    Inthirties关注Oracle数据库 维护 优化,安全,备份,恢复,迁移,故障处理如果你需要帮助或想和我一起学习的请联系
    联系方式QQ:370140387
    电子邮件:[email protected]
    网站: http://www.inthirties.com
      

  5.   

    alter table Course_Limited add constraints FK_Course_Limited2Course_ID foreign key(Course_Id) references Course(id); course表的(id)必须是primary key或者是unique key。 ===============================================…
    [/Quote]
    6楼正解,在表course_limited中添加一个外键约束就OK了,不过这个约束名也太长了
      

  6.   

    alter table A add constraints FK_test foreign key(Id) references test(Id); 
    如上:我有个疑问,外键说简单点就是为了使A中的主键Id出现的必须是test中Id出现的,对吧!
    要是不对,谁帮忙解释给我一下!!!但是我提问就是Course中有两个属性作为主键,当我要做这个时:
    alter table Course_Limited add constraints FK_Course_Limited2Course_ID foreign key(Course_Id) references Course(id); 
    出现以下提示:第 1 行出现错误:
    ORA-02270: 此列列表的唯一或主键不匹配这是为什么??
    就算是Course中的Id会有重复的,应该不会影响吧!!
    谁来解释一下,
      

  7.   

    就算是Course中的Id会有重复的,应该不会影响吧,外键不就是为了确保 Course_Limited 表中的属性Course_Id
    必须是Couese中的Id的范围之内吗??Id重复应该不会影响吧!!
    不知道我对外键的理解对否!!
      

  8.   

    course表中的主键是id和num  那么id确实可能存在重复,那样的话id就不能作为外键了
      

  9.   

     
    6楼正解,在表course_limited中添加一个外键约束就OK了,不过这个约束名也太长了
    [/Quote]作为外键的references必须是primary key或者是unique key。
      

  10.   

    谢谢,知道了!
    作为外键的references必须是primary key或者是unique key。不胜感激!!