我在这以例子说话,一目了然:
/*创建someRoadBus表*/
drop table if exists bussystem.someRoadBus;
create table bussystem.someRoadBus(
roadId int(14)unsigned unique not null,
primary key (roadId),
roadName varchar(64)not null,
aceTime tinyint null,
roadIntro text default null
)engine=InnoDB default charset=gb2312;
/*创建station表*/
drop table if exists bussystem.station;
create table bussystem.station(
staId int(14)unsigned unique not null,
primary key (staId),
`staName` varchar(64)not null,
staNum tinyint default 0,
`staTime` timestamp default current_timestamp on update current_timestamp,
f_roadId int(14)unsigned unique not null,
index i_f_roadId (f_roadId),
constraint station_f_road_of_someRoadBus
foreign key(f_roadId)
references bussystem.someRoadBus(roadId)
on delete cascade on update cascade
)engine=InnoDB default charset=gb2312;
先前多方改正查找资料得到结论:
1:外键的数据类型必须和对应表的字段类型相同;
2:外键的约束类型必须和对应表的字段的约束类型相同;
3:必须建有外键的索引是不正确的,建立索引只是使操作数据库更快;