This Domain(Admin5.com) is for Sale:

My SQL数据库实用技术(19)

时间:2007-12-23  来源:不详  作者:迈克DB

score 表中删除。
外部键有助于保持数据的一致性,而且还提供了某种方便的手段。MySQL 不支持外部键的原因主要是由于它对数据库的实现与维护有负作用。(MySQL 参考指南具体列出了这些原因。)注重,对于外部键的这种看法与其他数据库文献中的看法有些不同,有的数据库文献通常将它们描述成“基本的”。MySQL 的开发者并不赞同这个观点。假如您赞成,那么最好是考虑采用其他提供外部键支持的数据库。假如数据具有非凡复杂的关系,您可能不希望担负在应用程序中实现这些相关性的工作。(即使这样做的工作量要比增加几个额外的DELETE 语句的工作量要稍少一些。)除了在一定程度上能够在CREATE TABLE 语句中分析FOREIGN KEY 子句外,MySQL 不支持外部键。(这有助于使从其他数据库移植代码到MySQL 更为轻易。)MySQL 不强制让外部键作为一种约束,也不提供级联删除功能。
外部键强制实施的约束一般不难用程序逻辑来实现。有时,它只是一个怎样进行数据录入处理的问题。例如,为了将一个新记录插入score 表,不太可能插入不存在的学生的学分。显然,输入一组学分的方法应该是根据从student 表得出的学生名单,对每个学生,取其学分并利用该学生的ID 号产生一个score 表的记录。对于这个过程,不存在录入一个不存在的学生的记录的可能。您不会凭空造出一个学分记录来插入score 表。要实现DELETE 的级联效果,必须用自己的应用程序逻辑来完成。假如想要删除13 号学生。这也隐含表示需要删除该学生的学分记录。在支持级联删除的数据库中,只需要用如下的语句就可以删除student 表的记录和相应的score 表的记录: copyright dedecms
DELETE FROM student WHERE student_id = 13
而在MySQL 中,必须明确地用DELETE 语句自己进行第二个删除语句:
DELETE FROM student WHERE student_id = 13
DELETE FROM score WHERE student_id = 13
■ 存储过程和触发器。存储过程是编译和存放在服务器中的SQL 代码。它可在以后调用而无需从客户机发送并分析。可以对一个过程进行更改以影响使用它的任何客户机应用程序。触发器功能使一个过程在某个事件发生时被激活,如从表中删除某个记录时,激活相应的过程。例如,某个作为累计成分的记录被删除时,应该重新进行累计,使累计数反映最新情况。存储过程语言已列入了MySQL 预备实现的计划。
■ 视图。视图是一个逻辑概念,其功能像表但本身不是表。它提供了一种查看不同表中的列的途径,在查看时似乎这些列属于同一个表一样。视图有时也称为虚表。M y S Q L也预备实现视图功能。
■ 记录级权限和锁定。MySQL 支持各种权限,从全局权限到数据库、表、列的权限。但它不支持记录级的权限。不过,可在应用程序中利用GET_LOCK( ) 和R E L E A S E _LOCK( ) 函数来实现协同记录锁。这个过程在附录C“运行算符和函数参考”中相应的项目下介绍。
■ “- -”作为注释的开始。MySQL 不支持这种注释风格,因为它是一个有歧义的结构,虽然自MySQL 3.23 以来,注释可用两个短划线加一个空格开始。更具体的信息,请参阅3 . 7节“加注释”。 内容来自dedecms
内容来自dedecms


看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息