如何在mysql 中建立有关联关系的表
2007-08-13 11:03
246 查看
昨天在自己做的一个系统中使用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后,子表创建成功。
如:
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后,子表创建成功。
相关文章推荐
- Mysql之如何建立索引以及组合索引
- 在 MySQL Workbench 中如何可视的建立 MySQL 物理数据模型,并使用它来创建一个 MySQL 数据库
- mysql中如何建立主外键关系
- MySQL 如何修改已建立表的结构
- 如何检查mysql中建立的索引是否生效的检测方法
- 如何为mysql建立索引
- mysql如何建立外键
- 如何设计高效合理的MySQL查询语句(建立数据库索引的基本原则)
- 如何建立mysql时间戳字段
- 本文从如何建立mysql索引以及介绍mysql的索引类型,再讲mysql索引的利与弊,以及建立索引时需要注意的地方 首先:先假设有一张表,表的数据有10W条数据,其中有一条数据是nickname='
- 如何为mysql建立索引
- 教你如何建立mysql远程连接root权限用户
- 如何检查mysql中建立的索引是否生效的检测方法及相关参数说明
- 如何用MYSQL建立新表,并复制旧表的结构
- Ubuntu下mysql如何建立数据库
- Ubuntu下如何建立mysql的远程连接
- mysql如何建立数据库
- 如何建立mysql索引、介绍mysql的索引类型,mysql索引的利与弊,以及建立索引时需要注意的地方
- 在 MySQL Workbench 中如何可视的建立 MySQL 物理数据模型,并使用它来创建一个 MySQL 数据库