700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > MySQL的外键约束级联删除

MySQL的外键约束级联删除

时间:2018-07-17 13:39:48

相关推荐

MySQL的外键约束级联删除

数据库|mysql教程

MySQL,外键,约束,级联,删除,欢迎,进入,Linux,

数据库-mysql教程

直播盒子app源码,ubuntu菜单下移,tomcat多项目部署,python隐藏爬虫,php视频教程php基础技术,中小企业怎么做好seolzw

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 在更新数据库时使用外键约束 第一个表存储一些简单博客数据,而第二个表则存放这些博客的有关评论。这例子的巧妙之处在于,它给子表定义了一个外键约束,从而允许我们在博客文章被删除时自动地删除有

易语言系统智能源码,vscode怎么创建网站,ubuntu vmdk,idea为啥要安装tomcat,自动运行sqlite,网页设计字体大小代码,广州双线服务器托管,.net word插件,前端流行框架,爬虫网络用词,php自动刷新,番禺seo优化,springboot新的注解,asp网站架设工具,网页城市定位js,seo网站模板下载,一般公司网站的后台管理在哪,页面顶部图片,天涯服务器管理系统,小程序 快递 源码lzw

小号查询源码,vscode 编译速度慢,ubuntu 取代迅雷,更改tomcat默认配置,python爬虫 一,php 获取ip 1,惠州seo多长时间,使用asp建网站源码,maccms v10 x模板lzw

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

在更新数据库时使用外键约束

第一个表存储一些简单博客数据,而第二个表则存放这些博客的有关评论。这例子的巧妙之处在于,它给子表定义了一个外键约束,从而允许我们在博客文章被删除时自动地删除有关的所有评论。下面给出这两个表的定义,它们建立了一个一对多的关系:

01

DROP TABLE IF EXISTS `test`.`blogs`;

02

03

CREATE TABLE `test`.`blogs` (

04

05

`id` INT ( 10 ) UNSIGNED AUTO_INCREMENT,

06

07

`title` TEXT ,

08

09

`content` TEXT ,

10

11

`author` VARCHAR ( 45 ) DEFAULT NULL ,

12

13

PRIMARY KEY (`id`)

14

15

) ENGINE = InnoDB DEFAULT CHARSET = utf8;

16

17

18

19

DROP TABLE IF EXISTS `test`.`comments`;

20

21

CREATE TABLE `test`.`comments` (

22

23

`id` INT ( 10 ) UNSIGNED AUTO_INCREMENT,

24

25

`blog_id` INT ( 10 ) UNSIGNED DEFAULT NULL ,

26

27

`comment` TEXT ,

28

29

`author` VARCHAR ( 45 ) DEFAULT NULL ,

30

31

PRIMARY KEY (`id`),

32

33

KEY `blog_ind` (`blog_id`),

34

35

CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`blog_id`) REFERENCES `blogs` (`id`) ON UPDATE CASCADE

36

37

) ENGINE = InnoDB DEFAULT CHARSET = utf8;

除了给以上两个InnoDB表定义一些简单字段外,上述的代码还使用了一个外键约束,使得每当父表的“id”键更新时,表comments的相应内容也会级联更新。给父字段“id”定义约束的代码如下所示:

1

CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`blog_id`) REFERENCES `blogs` (`id`) ON UPDATE CASCADE

InnoDB引擎除了可以规定根据父表完成的操作对子表进行的级联更新以外,还可以执行其他的操作,包括“NO ACTION”和“RESTRICT”,这样即使父表发生更新或者删除操作,也不会引起对子表的任何操作。

现在,根据上面的MySQL表的定义,填充如下所示的数据:

1

INSERT INTO blogs (id, title, content, author) VALUES ( NULL , ‘ Title of the first blog entry ‘ , ‘ Content of the first blog entry ‘ , ‘ Tom ‘ )

2

3

INSERT INTO comments (id, blog_id, comment, author) VALUES ( NULL , 1 , ‘ Commenting first blog entry ‘ , ‘ Susan Norton ‘ ), ( NULL , 1 , ‘ Commenting first blog entry ‘ , ‘ Rose ‘ )

然后,由于某种原因,我们更新了第一个博客数据,那么只要运行下列SQL语句,与该博客文章有关的所有评论也会随之自动更新:

UPDATE blogs SET id = 2 , title = ‘ Title of the first blog entry ‘ , content = ‘ Content of the first blog entry ‘ , author = ‘ John Doe ‘ WHERE id = 1

这看起来非常不错,对吧?前面讲过,外键约束容许您将表之间的关系的维护工作委托给数据库层,这意味着编写与数据层交互的应用程序时可以省去不少的代码。

[1] [2] [3]

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。