mysql外键创建不成功/失效

当前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与InnoDB的区别见: Mysql 中 MyISAM 和 InnoDB 的区别有哪些? - 知乎 (zhihu.com))使用了: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 ;
posted @ 2022-03-20 18:09  思wu邪  阅读(57)  评论(0编辑  收藏  举报