为了账号安全,请及时绑定邮箱和手机立即绑定

mysql中外键如何使用?

mysql中外键如何使用?

慕无忌1623718 2018-12-20 19:15:56
create table BulletinInfo(bulletinId int primary key auto_increment not null, bulletintitle varchar(100) not null, bulletincontent text not null, userId int foreign key(userId) references UserInfo(userId), bulletincreateTime datetime default(getdate()) not null )这是我建 的表,系统报ERROR 1064 (42000): You have an error in your SQL syntax; check the manual thatcorresponds to your MySQL server version for the right syntax to use near 'foreign key(userId) references UserInfo(userId),bulletincreateTime datetime ' at line 5请问应该怎么改?
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

1、只有InnoDB类型的表才可以使用外键。mysql默认是MyISAM,这种类型不支持外键约束

2、外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作。

3、外键的作用:

保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值。

4、建立外键的前提:

两个表必须是InnoDB表类型。
使用在外键关系的域必须为索引型(Index)。
使用在外键关系的域必须与数据类型相似。

5、创建的步骤

指定主键关键字: foreign key(列名)。

引用外键关键字: references <外键表名>(外键列名)。

6、事件触发限制:on delete和on update , 可设参数cascade(跟随外键改动)。
restrict(限制外表中的外键改动),set
Null(设空值),set Default(设默认值)。
[默认]no action

7、举例

outTable表 主键 id 类型 int

创建含有外键的表:

代码如下:
create table temp(
id int,
name
char(20),
foreign key(id) references outTable(id) on delete cascade on update
cascade);

说明:把id列 设为外键 参照外表outTable的id列 当外键的值删除 本表中对应的列筛除 当外键的值改变 本表中对应的列值改变。

代码如下:
create table temp( id int, name char(20),
foreign key(id) references outTable(id) on delete cascade on update
cascade);



查看完整回答
反对 回复 2019-01-05
  • 1 回答
  • 0 关注
  • 469 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信