mysql 两个外键级联删除的问题

我在mysql想实现这样一种情况,有一个教师表,主键tno。一个课程表,主键是cno。第三张表教室课程安排表,主键是id(表示条目数,自增长的),有一字段为tno作为外键... 我在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也要实现这一个功能。
展开
 我来答
霜_河
2012-05-15 · TA获得超过479个赞
知道小有建树答主
回答量:277
采纳率:0%
帮助的人:210万
展开全部
DROP TABLE IF EXISTS `courseteacher`;
CREATE TABLE `courseteacher` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`tno` int(10) unsigned NOT NULL,
`cno` int(10) unsigned NOT NULL,
PRIMARY KEY (`ID`),
KEY `FK_courseteacher_1teacher1` (`tno`),
KEY `FK_courseteacher_2classes1` (`cno`),
CONSTRAINT `FK_courseteacher_1terchar1` FOREIGN KEY (`tno`) REFERENCES `Teacher` (`tno`) ON DELETE CASCADE,
CONSTRAINT `FK_courseteacher_2clases1` FOREIGN KEY (`cno`) REFERENCES `Course` (`cno`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

试过没问题啊,你往这个表插入数据的前提是tno和cno必须存在于Teacher表和Course表
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式