数据库

mysql创建外键约束

2018-09-07  本文已影响0人  陆_志东

语法:

foregin key(当前表字段) references 父表(父表字段) [ON DELETE reference_option] [ON UPDATE reference_option]

reference_option 选项:
CASCADE: 从父表中删除或者更新对应的行,当前子表同时删除或者更新对应的行
SET NULL: 从父表中删除或者更新对应行,当前子表同时将外键列设置为NULL,如果子表外键字段设置了NOT NULL,还需要设置DEFAULT,否则会出错
NO ACTION: InnoDB拒绝删除或者更新父表,对父表的外键字段拒绝操作,这意味着删除父表中的行也会失败
RESTRICT: 拒绝删除或者更新父表
SET DEFAULT: InnoDB目前不支持。

外键约束常用的两种选项

ON UPDATE CASCADE ON DELETE RESTRICT;
ON UPDATE CASCADE ON DELETE CASCADE

没有创建mysql表的时候创建外键约束

首先创建主表Class

create table Class(
  id int auto_increment primary key,
  name varchar(6)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

再创建字表students

create table students(
  id int auto_increment primary key,
  name varchar(6),
  class_id int,
  foreign key(class_id) references Class(id) ON UPDATE CASCADE ON DELETE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

这样就添加了外键约束,每个同学都会引用一个班级.要注意删除的时候需要先删除拥有外键约束的子表

已创建表添加外键约束

alter table 子表的数据表名 add foreign key(子表的外键名称) references 父表的数据表名称(父表的主键名称);
alter table students add foreign key(class_id) reference Class(id) ON UPDATE CASCADE ON DELETE CASCADE
上一篇 下一篇

猜你喜欢

热点阅读