我在这里面临一个奇怪的问题。
表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。
答案 0 :(得分:3)
您可能正在使用不支持外键的MyISAM表。解析并接受FK指令,然后忽略它们。
您需要使用InnoDB表来获得正确的FK支持:
CREATE TABLE (...) ENGINE=InnoDB;
^^^^^^^^^^^^^^
如果您执行show create table your_table
,您将在输出结束时看到正在使用的引擎类型。