MySQL创建外键[条件/注意事项]

 

先看个表实例:

mysql> CREATE TABLE `ZZJG` (
`id` int(11) NOT NULL auto_increment,
`orgid` varchar(32) NOT NULL COMMENT '组织机构ID',
`orgname` varchar(32) DEFAULT NULL COMMENT '组织机构名称',
`parentid` varchar(32) DEFAULT NULL COMMENT '上级组织机构ID',
index(`orgid`),
PRIMARY KEY (`id`,`orgid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='组织机构表';

Query OK, 0 rows affected

mysql> CREATE TABLE `REGION` (
`id` int(11) NOT NULL auto_increment,
`regionid` varchar(32) NOT NULL COMMENT '区域ID',
`regionname` varchar(32) NOT NULL COMMENT '区域名称',
`pregionid` varchar(32) DEFAULT NULL COMMENT '上级区域ID ',
`orgid` varchar(32) DEFAULT NULL COMMENT '上级组织机构ID ',
index(`regionid`,`orgid`),
PRIMARY KEY (`id`),
foreign key(`orgid`) references zzjg(`orgid`) on delete cascade on update cascade
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='区域表';

Query OK, 0 rows affected

==============================================================

很多时候,我们去创建外键,总是出错。这个主要是我们没搞清楚创建条件、没有认真阅读操作手册造成的。

常出错的错误报告就是:ERROR 1005 : Can't create table '.\DB\XXXTable.frm' (errno: 150)

==================================条件/注意事项==========================

为了建立两个MySQL表之间的一个外键关系,必须满足以下三种情况:   
  
    * 两个表必须是InnoDB表类型。   
    * 使用在外键关系的域(字段)必须为索引型(Index)。所以要为设置外键的字段建立index。
    * 使用在外键关系的两个域(字段)数据类型要相同。  

http://hi.baidu.com/jsjok/blog/item/7699668deb954bf4f11f3642.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值