方法一 :因为 数据库有两种类型 MyISAM和InnoDB。目前只有InnoDB引擎类型支持外键约束
create table test2(id int primary key,fid int, foreign key(fid) references test1(id))TYPE=INNODB;
下面这段文字是对 声明 外键的解释
create table city(
......
key idx_fk_country_id (country_id),
constraint fk_city_country Foreign Key(country_id) References country(country_id) on DELETE restrict ON update cascade ON Delete cascade
)...
注:ON update cascade ON Delete cascade级联更新和级联删除。
通常在设置外链时,都会先设置外链字段的索引,如上:key idx_fk_country_id (country_id),但这不是非必需的,上面代码中:
key idx_fk_country_id (country_id),
constraint fk_city_country
这些是可以省去的,直接从FOREIGN KEY开始。当然,如果要给外链命名,则constraint 是必需要的,
方法二: 定义第三个表来定义
CREATE TABLE `basicdetail` (
`detailId` int(11) default NULL,
`studentId` int(11) NOT NULL,
PRIMARY KEY (`studentId`),
UNIQUE KEY `detailId` (`detailId`),
KEY `FKEAEC91FF9E05C387` (`detailId`),
KEY `FKEAEC91FF7CDB817A` (`studentId`),
CONSTRAINT `FKEAEC91FF7CDB817A` FOREIGN KEY (`studentId`) REFERENCES `studentbasict` (`studentId`),
CONSTRAINT `FKEAEC91FF9E05C387` FOREIGN KEY (`detailId`) REFERENCES `studentdetailt` (`detailId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;