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

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


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

古人云,温故而知新,那么先让我们来回顾一下前面学过的内容吧。之前,我们介绍过如何运用外键约束级联更新和删除存放博客文章评论的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抽象类来生成对我们的示例表的级联更新。



标签:MySQL外键约束,MySQL约束,外键
0
投稿

猜你喜欢

  • 我们需要的是怎样的分页?

    2007-09-28 20:24:00
  • Html的几个小技巧

    2011-04-29 14:02:00
  • asp如何准确获知对方来访问的时间和URL?

    2010-07-07 12:25:00
  • javascript新闻图片轮换类

    2009-01-09 12:57:00
  • ASP和SQL结合处理时间应用

    2008-06-09 15:15:00
  • asp三天学好ADO对象之第一天

    2008-10-09 12:46:00
  • 几个常用的js小函数

    2007-09-19 12:59:00
  • [新手必看]15个asp编程常见问题解答

    2007-08-22 13:07:00
  • Ext2.0.2经典的一个JS组件(带EXT中文手册)

    2009-04-13 12:24:00
  • CSS 3入门

    2009-04-19 13:00:00
  • Yahoo!上的小秘密

    2007-08-23 09:48:00
  • 深入了解SQL Server 2008 商业智能平台

    2009-01-15 13:03:00
  • JavaScript大牛:Douglas Crockford

    2009-03-31 12:06:00
  • 产品设计与用户体验

    2009-02-02 10:15:00
  • asp的系统变量ServerVariables (“HTTP_USER_AGENT“)问题

    2009-02-04 15:51:00
  • PJBlog3优化——单击自动输入验证码

    2009-05-17 11:03:00
  • Oracle 9i 数据库异常关闭后的启动

    2010-07-20 12:49:00
  • 详解链接的rel与target

    2007-11-05 18:25:00
  • ASP模拟POST提交数据的方法

    2010-01-14 20:06:00
  • 301转向代码合集

    2008-03-20 10:12:00
  • asp之家 网络编程 m.aspxhome.com