网络编程
位置:首页>> 网络编程>> 数据库>> 玩转MySQL中的外键约束之PHP篇(2)

玩转MySQL中的外键约束之PHP篇(2)

 来源:asp之家 发布时间:2010-03-18 10:20:00 

标签:MySQL外键约束,MySQL约束,外键


二、以级联方式更新和删除数据库中的数据

古人云,温故而知新,那么先让我们来回顾一下前面学过的内容吧。之前,我们介绍过如何运用外键约束级联更新和删除存放博客文章评论的InnoDB表中的数据。如果您尚未阅读前面的文章也不要紧,下面我们简单回顾这些内容。

这里是我们的示例中用到的两个表的定义,如下所示:


DROP TABLE IF EXISTS `test`.`blogs`;
CREATE TABLE `test`.`blogs` (
`id` INT(10) UNSIGNED AUTO_INCREMENT,
`title` TEXT,
`content` TEXT,
`author` VARCHAR(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `test`.`comments`;
CREATE TABLE `test`.`comments` (
`id` INT(10) UNSIGNED AUTO_INCREMENT,
`blog_id` INT(10) UNSIGNED DEFAULT NULL,
`comment` TEXT,
`author` VARCHAR(45) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `blog_ind` (`blog_id`),
CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`blog_id`) REFERENCES `blogs` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

上面的代码定义了两个表,需要注意一下第二个,因为它为“blog_id”字段规定了一个约束,所以当post表中的数据被更新和删除时,将触发相应的级联操作。

为了帮您理解这一过程,我们可以在表中填上一些数据,这时可以通过SQL语句INSERT来完成,如下:


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

INSERT INTO comments (id, blog_id, comment, author) VALUES (NULL, 1, 'Commenting first blog entry', 'Tom'), (NULL, 1, 'Commenting first blog entry', 'Rose')


现在,我们唯一的一条博客数据已经有了两条评论数据,如果由于任何原因需要更新博客及其评论数据的话,可以通过下列命令完成:


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

这看起来非常简单,但是,如果我说将博客数据连同相应的评论数据一同删除会更加简单,您能会相信吗?如果不信的话,请看下面的SQL语句:

DELETE FROM blogs WHERE id = 2

如您所见,这就是删除指定博客及其评论所需的全部SQL代码,这足以证明通过外键约束维护两个InnoDB表的完整性到底有多么的方便。

迄今为止,我们已经简单回顾之前所学的内容,接下来,我们将继续探索这些表的约束的各种优点。 就像本文开头部分介绍的那样,我们将开始讲解如何通过PHP 5内置的MySQL抽象类来生成对我们的示例表的级联更新。



0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com