为什么我可以为不存在的表创建外键约束?

时间:2014-03-02 01:49:46

标签: mysql sql foreign-keys

我正在玩外键约束,并意识到我可以为不存在的表添加约束。我也可以插入记录,没问题。

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)

我想知道我是否不太了解外键约束。

1 个答案:

答案 0 :(得分:3)

我认为默认存储设置为MyIsam,而不是InnoDb,表格创建为MyIsam,而不是Innodb。

只有Innodb表支持外键 对于MyIsam表,不支持外键约束,并且在使用create table命令创建表时,会解析外键规范,但会忽略它。

尝试使用innodbSET storage_engine=innodb;设置为默认引擎,或者使用明确的Innodb创建一个表格,如下所示:

create table t(id int, FOREIGN KEY (id) REFERENCES x(id)) engine=innodb;