现在我要建立以下这张表(Course):
Cno Cname       Cpno   Ccredit
1   数据库      5      4
2   数学               2
3   信息系统    1      4
4   操作系统    6      3
5   数据结构    7      4
6   数据处理           2
7   PASCAL语言  6      4
其中属性Cpno受到Cno的约束我在书上看到的语句是
CREATE TABLE Course(
    Cno char(4) primary key,
    Cname char(40),
    Cpno char(4),
    Ccredit SMALLINT,
    FOREIGN KEY (Cpno) REFERENCES Course(Cno)/*完整性约束*/
);
执行上面的语句没问题,但是在插入第一条元组时提示Cpno这个属性受到约束不能插入,这个我能理解。
于是我换了一种方式,就是在创建表时不加约束条件,在把所有元组逐条插入完之后再增加约束说明,现在问题来了,不知道增加约束的语句是什么,在网上查了很多好像也不正确。求各位大神解答

解决方案 »

  1.   

    alter table Course add FOREIGN KEY (Cpno) REFERENCES Course(Cno)
    这个语法MYSQL的官方免费手册上就有。
      

  2.   

    当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
    http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
    http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html8、如何给分和结贴?
    http://community.csdn.net/Help/HelpCenter.htm#结帖
      

  3.   

    ALTER TABLE `Course` ADD CONSTRAINT `self_f` FOREIGN KEY (`Cpno`) REFERENCES `Course` (`Cno`);
      

  4.   

    试过这个了,出错的。
    Cannot add or update a child row: a foreign key constraint fails('s_t'.'#sql-160_1',CONSTRAINT  '#sql-160_1_ibfk_1' FOREIGN KEY ('Cpno') REFERENECS 'Course'('Cno'))
      

  5.   

    constraint Cpno_fk(外键名称) foreign key (Cpno) references Course(Cno);