如何在mysql 中建立有关联关系的表

来源:互联网 发布:剑灵雪域公主数据 编辑:程序博客网 时间:2024/04/30 12:38

      昨天在自己做的一个系统中使用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后,子表创建成功。