create table Course
(
  Cno char(4) PRIMARY key,  
  Cname char(40) ,  
  Cpno char(4) default null,  
  Ccredit smallint,
  FOREIGN key (Cpno) references Course(Cno)  
);
同一条记录中Cpno和Cno取值不能相同,而Cno又不能取NULL
每插入一条记录时都要检查Cpno的约束情况;
····
那么,插入第一条记录就开始出现问题了请高手多多指教!

解决方案 »

  1.   

    1:set FOREIGN_KEY_CHECKS=0
    2:等数据插入完后再建立外键
      

  2.   

    用触发器,插入前判断cno和cpno,如果相同,人为制造一个错误使COURSE插入失败
    delimiter $$
    create trigger tr_tb before insert on course for each row
    begin
    if new.cno=new.cpno then
    insert into tb select 1;
    end if;
    end
    $$
    delimter ;
      

  3.   

    先SET FOREIGN_KEY_CHECKS=0吧,先种植一个值,然后再插入。
      

  4.   

    SET FOREIGN_KEY_CHECKS=0
    简单一些
      

  5.   

    SET FOREIGN_KEY_CHECKS=0
    简单一些
      

  6.   

    SET FOREIGN_KEY_CHECKS=0
    简单一些