我正在玩外键约束,并意识到我可以为不存在的表添加约束。我也可以插入记录,没问题。
mysql> show tables;
Empty set (0.00 sec)
mysql> create table t(id int, FOREIGN KEY (id) REFERENCES x(id));
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t values (1);
Query OK, 1 row affected (0.00 sec)
我想知道我是否不太了解外键约束。
答案 0 :(得分:3)
我认为默认存储设置为MyIsam,而不是InnoDb,表格创建为MyIsam,而不是Innodb。
只有Innodb表支持外键
对于MyIsam表,不支持外键约束,并且在使用create table
命令创建表时,会解析外键规范,但会忽略它。
尝试使用innodb
将SET storage_engine=innodb;
设置为默认引擎,或者使用明确的Innodb创建一个表格,如下所示:
create table t(id int, FOREIGN KEY (id) REFERENCES x(id)) engine=innodb;