1

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

表格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));

现在据我了解 SQL ,如果学位表中不存在字段 degree_id 的值,我无法在课程表中插入任何值。

但是如果我尝试插入类似的东西

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

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

4

1 回答 1

3

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

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

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

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

于 2013-05-08T15:44:44.147 回答