当前mysql版本:select version();
结果为:5.5.40。
在复习mysql外键约束时创建表格:stu与grade,目标:grade的id随着student的id级联更新,且限制删除。
创建student表格:
create table student ( id int ( 8 ), name varchar ( 20 ), department varchar ( 20 ), index ( id )) engine = innodb;
创建grade表格:
create table grade ( id int primary key auto_increment, score int not null, stu_id int, index( id ), constraint yueshu1 foreign key ( id ) references student ( id ) on delete restrict on update cascade )engine = innodb ;
原以为已经成功,且发现外键仿佛没有添加成功,即grade表的id字段不会随着student表的id字段更新,且没有删除的限制。
经过排查发现是表的引擎不对(myisam不支持外键,innodb支持)使用了:myisam
使用语句为:
show table status from fuxi where name like 'grade';
因此将创建grade表的语句指定engine=innodb即可:
create table grade ( id int primary key auto_increment, score int not null, stu_id int, index( id ), constraint yueshu1 foreign key ( id ) references student ( id ) on delete restrict on update cascade )engine = innodb ;
到此这篇关于mysql外键创建不成功/失效如何处理的文章就介绍到这了,更多相关mysql外键创建不成功/失效内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论