MYSQL不检查外键是否存在

时间:2013-05-08 15:42:36

标签: mysql database foreign-keys foreign-key-relationship

我在这里面临一个奇怪的问题。

表1:

create table degree (degree_id varchar(6) primary key , degree_name varchar(32) unique key , degree_abbr varchar(3));

表2:

create table course (course_id varchar(6) primary key , degree_id varchar(6) not null, course_name varchar(40) not null ,  foreign key (degree_id) references degree 
(degree_id));

现在据我所知,如果度数表中不存在字段degree_id的值,我就不能在课程表中插入任何值。

但如果我尝试插入类似

的内容
insert into course values('cor_001' , 'blah' , 'COURSE NAME' );  

此查询成功运行,即使'blah'不是有效的degree_id。

1 个答案:

答案 0 :(得分:3)

您可能正在使用不支持外键的MyISAM表。解析并接受FK指令,然后忽略它们。

您需要使用InnoDB表来获得正确的FK支持:

CREATE TABLE (...) ENGINE=InnoDB;
                  ^^^^^^^^^^^^^^

如果您执行show create table your_table,您将在输出结束时看到正在使用的引擎类型。

相关问题