猿问

mysql中外键如何使用?

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 that
corresponds to your MySQL server version for the right syntax to use near 'forei
gn key(userId) references UserInfo(userId),
bulletincreateTime datetime ' at line 5请问应该怎么改?

慕无忌1623718
浏览 470回答 1
1回答

冉冉说

1、只有InnoDB类型的表才可以使用外键。mysql默认是MyISAM,这种类型不支持外键约束2、外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作。3、外键的作用:保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值。4、建立外键的前提:两个表必须是InnoDB表类型。使用在外键关系的域必须为索引型(Index)。使用在外键关系的域必须与数据类型相似。5、创建的步骤指定主键关键字: foreign key(列名)。引用外键关键字: references <外键表名>(外键列名)。6、事件触发限制:on delete和on update , 可设参数cascade(跟随外键改动)。restrict(限制外表中的外键改动),setNull(设空值),set Default(设默认值)。[默认]no action7、举例outTable表 主键 id 类型 int创建含有外键的表:代码如下:create table temp(id int,namechar(20),foreign key(id) references outTable(id) on delete cascade on updatecascade);说明:把id列 设为外键 参照外表outTable的id列 当外键的值删除 本表中对应的列筛除 当外键的值改变 本表中对应的列值改变。代码如下:create table temp( id int, name char(20),foreign key(id) references outTable(id) on delete cascade on updatecascade);
随时随地看视频慕课网APP

相关分类

MySQL
我要回答