1
我在这里面临一个奇怪的问题。MYSQL不检查外键是否存在
表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');
这个查询成功运行,即使“胡说”不是一个有效的degree_id。
是的,这是正确的。现在我该如何改变它们以使用InnoDB?我已经创建和填充了很多表格。我无法放下桌子。 – 2013-05-08 15:49:30
'alter table yourtable engine = innodb'。您将不得不进一步修改表格以重新应用FK定义。一旦myisam完成了“创建”查询,它们就会丢失。 – 2013-05-08 15:51:00
K.所以我需要先修改所有引擎,然后修改表来应用外键。无论如何改变MySQL的默认引擎?这样我每次创建表时都不需要提及ENGINE属性。 – 2013-05-08 15:53:59