语句大概就是这样创建了emp表和advice表,advice表里的emp_id对外键到emp表里的id项,为什么emp表还能被删除
create table emp
(
id int primary key,
name varchar(32) not null
);
create table advice
(
emp_id int not null,
content text not null,
foreign key(emp_id) references emp(id)
);
drop table emp;
运行结果:
当某表被外键约束关联时,InnoDB不允许你删念亩除该表,除非你执行了SET foreign_key_checks = 0命令。当LOAD DATA和ALTER TABLE操作时设置foreign_key_checks为滑做0是很有用的,可以避仔让森免外键检查提高效率。
foreign_key_checks从MySQL 3.23.52 and 4.0.3开始时可用的。
查看当前FOREIGN_KEY_CHECKS的值可用如下命令
SELECT @@FOREIGN_KEY_CHECKS;
禁用外键约束: SET FOREIGN_KEY_CHECKS=0;
启动外键约束: SET FOREIGN_KEY_CHECKS=1;
其他参考:
http://dev.mysql.com/doc/refman/4.1/en/innodb-foreign-key-constraints.htmlMySQL之外键约束:
http://blog.csdn.net/cnjsnt_s/article/details/5548280
是因为你数据引擎的问题,MyISAM和InnoDB。目前只有InnoDB引擎类型支持外键约束。
应该是这样的,你的advice表中没有数据或者advice表中所有数据的emp_id为空