当前位置:龙图IT服务 > 数据库 >

玩转MySQL中的外键束缚

作者:龙图IT服务 发布时间:2014-11-12 阅读: 转至微博:

  【IT168 文档】白文将向观众群引见MySQL中的外键束缚。经过白文的引见,您会发觉当复旧父表中的数据行的时分触发对于子表数据的级联复旧是件易如反掌的事件。

  一、简介

  运用MySQL开拓过数据库驱动的中型web使用顺序的人都晓得,对于联系数据库的表停止创立、检索、复旧和芟除等操作都是些比拟容易的进程。实践上,只需主宰了最罕见的SQL语句的用法,并相熟您取舍运用的效劳器端剧本言语,就可以对于付对于MySQL表所需的各族操作了,特别是当您运用了快捷MyISAM数据库引擎的时分。然而,即便正在最容易的状况下,事件也要比咱们设想的要简单得多。上面咱们用一度垂范的事例停止注明。假定您正正在运转一度博客网站,您简直天天复旧,况且该站点答应拜访者评说您的帖子。

  正在这种状况下,咱们的数据库形式至多该当囊括两个MyISAM表,一度用来寄存您的博客作品,另一度来解决拜访者的评说。很显然,这两个表之间具有一度一对于多的联系,因为咱们要正在第二个表中界说一度外键,再不正在复旧或者许芟除数据行时能够维持数据库的完好性。

  像那样的使用顺序,没有只两个表的完好性是一度严重的应战,而最大的难题正在于咱们必需正在使用顺序级别来它们的完好性。这是大全体没有请求运用事务的web名目正在开拓时期所采取的办法,由于MyISAM表能够需要精彩的功能。

  千万,那样做也是有代价的,正如我后面所说的,使用顺序必需数据库的完好性和分歧性,这就象征着要完成更简单的顺序设想论理来解决各个表之间的联系。固然能够经过运用形象层和ORM模块来简化数据库拜访,然而随着使用顺序所需数据表的单位的增多,解决它们所需的论理无疑也会随之变得越发简单。

  那样,关于MySQL来说,有没无数据库级别的外键解决形式来协助数据库完好性的呢? 厄运的是,答案是确定的!MySQL还能够支撑InnoDB表,使咱们能够经过一种无比容易的形式来解决外键束缚。某个特点答应咱们能够触发器某些举措,诸如复旧和删掉表中的某些数据行以预约义的联系。

  凡是事有益皆有弊,运用InnoDB表的次要缺欠是它们的进度要比MyISAM慢,特别是正在必需查问许多表的大范围使用顺序中,这小半尤为显然。好正在较新读物MySQL的MyISAM表也已支撑外键束缚。

  白文将引见如何将外键束缚使用于InnoDB表。于是,咱们还将运用一度容易的基于PHP的MySQL形象类来创立相关的示例代码;千万,您也能够运用本人喜爱的其它效劳器端言语。现正在,咱们开端引见如何将外键束缚使用于MySQL。

  二、运用外键束缚的机遇

  规矩说,正在MySQL中运用InnoDB表的时分,没有定然非用外键束缚没有可,但是,为了外键束缚正在某些状况下的功能,咱们将经过后面谈到的事例的代码停止详细注明。它囊括两个MyISAM表,辨别用来寄存博客作品和评说。

  界说数据库形式时,咱们要正在这两个表之间构建起一对于多的联系,办法是正在寄存评说的表中创立一度外键,以将内中的数据行(即评说)对于应到一定的博客作品。上面是创立示例MyISAM表的根本SQL代码:

  Code highlighting produced by Actipro CodeHighlighter (freeware)

关键词: mysql命令大全