昨天在自己做的一个系统中使用mysql,折腾了半天始终无法建立外键,通过查找文档最终将问题解决,原来mysql中默认建立的表所使用的存储引擎为MyISAM类型,在这种类型的table中建立的外键只起到一个注释,提示的作用,对外键约束并无实际作用。要建立真正有意义的外键约束,需要建立类型存储引擎为INNODB类型的表。
如:
create table parent(id int(3),
name varchar(10)
)type=innodb;
create table children( id int(3) ,
name varchar(10) ,
parent_id int(3),
primary key(id),
index(parent_id), //为外键手工建立索引
foreign key(parent_id) references parent(id) on delete cascade
)type=innodb;
mysql中建立关联关系与oracle有所不同,在oracle中只要为字段建立外键即会自动为该字段建立索引,但是在mysql中必须手工为需要建立外键的字段手工建立索引,否则无法创建成功。
另外,我在建用户表是直接使用user作为表名,虽然该表创建成功,但是在其子表中建立与其关联的外键时无法创建成功,后来发现user为系统的关系字。将user表名改为user_info后,子表创建成功。