外键不会阻止我输入数据MySQL

Ste*_*eve 3 mysql sql foreign-keys

我有一个表,其中一列作为外键连接到另一个表.这是一个板球问题,我有一个名为Fixtures的桌子和另一个名为Inning的桌子.

Inning表有一个FixtureId列,与Fixture表有关.

我希望如果我使用与Fixture无关的FixtureId对inning表进行插入,那么它会出错,但事实并非如此......

谁能解释为什么会这样?

Dan*_*llo 6

创建表时,请确保使用InnoDB存储引擎.其他存储引擎将简单地忽略外键约束.(来源)

例:

CREATE TABLE a (
     id INT AUTO_INCREMENT PRIMARY KEY
) ENGINE=INNODB;

CREATE TABLE b (
     id INT AUTO_INCREMENT PRIMARY KEY,
     a_id INT,
     FOREIGN KEY (a_id) REFERENCES a(id)
) ENGINE=INNODB;

INSERT INTO b (id, a_id) VALUES(NULL, 1);
Run Code Online (Sandbox Code Playgroud)

上面的插入失败了:

错误1452(23000):无法添加或更新子行:外键约束失败...