日期:2014-05-16  浏览次数:20967 次

mysql 两个外键级联删除的问题
在mysql想实现这样一种情况,有一个教师表,主键tno。一个课程表,主键是cno。第三张表 教室课程安排表,主键是id(表示条目数,自增长的),有一字段为tno作为外键约束对应教师表的tno,有一个字段为cno,作为外键约束对应课程表的cno。且这两个字段都是级联删除。 请问能实现么?
  我自己写的语句是这样的:
create table courseteacher(
cto bigint primary key auto_increment,
tno bigint not null,
cno bigint not null,
weekday varchar(20) not null,
seq varchar(5) not null,
foreign key(cno) references course(cno) on delete cascade on update cascade,
foreign key(tno) references teacher(tno) on delete cascade on update cascade
);
 毫无意外,在给这张表插入数据的时候就报错了,
Cannot add or update a child row
请问有什么方法能实现我要的那种情况么?最主要的是要实现 teacher表里边删除一条记录的时候,courseteacher表里边相对应的记录也会被删掉,比如说删掉tno为1的老师,那么courseteacher表里边有关tno为1的老师的记录也删掉。同样course也要实现这一个功能。

------解决方案--------------------
给出你的测试语句 create table course ..., create table teacher ... insert into course ... insert into teacher , insert into courseteacher..
------解决方案--------------------
既然有级联关系 那就只能写多条sql按照级联关系删除
------解决方案--------------------
级联删除可以考虑一下触发器。