码迷,mamicode.com
首页 > 数据库 > 详细

sql example 3 -- foreign_key

时间:2015-06-14 12:21:21      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

sql example 3 – foreign_key

sql example 3 – foreign_key

优点:
保持数据一致性, 完整性
实现一对一或者一对多的关系

要求:
必须使用相同的存储引擎 – InnoDB /etc/my.cnf
数字长度, 是否是 unsigned 的属性相同
字符长度可以不同
必须有索引, 没有的话自动创建

drop table if exists test1;
create table test1 (
id int auto_increment primary key,
name varchar(20) NOT NULL
);
drop table if exists test2;
create table test2 (       # error 150, 错误 类型不同
id2 smallint primary key auto_increment,
name2 varchar(10) not null,
foreign key (id2) references test1 (id)
);
drop table if exists test2;
create table test2 (
id2 int auto_increment primary key,
name2 varchar(10) not null,
foreign key (id2) references test1 (id)
);

父表: test1
子表: test2

foreign key 默认: 父表和子表的行为

on delete -—

cascade 从父表删除或者更新且 自动删除或者更新子表 中匹配的行
set null 从父表删除或者更新行, 并设置子表中的外键列为 NULL
restrict 拒绝对父表的删除或者更新操作
no action 标准 sql 关键字, 和 restrict (mysql 特有) 相同 (是默认值)
create table test3 (
id3 int primary key auto_increment,
name3 varchar(10) not null,
foreign key (id3) references test1 (id) on delete cascade
);
drop table test3, test2, test1;

sql example 3 -- foreign_key

标签:

原文地址:http://www.cnblogs.com/sunznx/p/4574833.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!