php

位置:IT落伍者 >> php >> 浏览文章

PHP网络编程:使用触发器[1]


发布日期:2019年12月11日
 
PHP网络编程:使用触发器[1]
——此文章摘自《PHP网络编程典型模块与实例精讲》定价 特价 详细>>http://tracklinktechcn/?m_id=dangdang&a_id=A&l=&l_type= width= height= border= nosave>

除了在PHP程序中使用数据库事务处理的方法来保证数据库操作的同步和数据库数据的完整性之外还可以使用存储过程(在MySQL后引入的功能)及触发器在数据库后台达到相同的功能而且往往更加有效以下先介绍如何在MySQL中使用触发器

一个触发器是一种声明告诉数据库应该在特定事件发生时执行特定的触发程序触发器可以定义在一个INSERTUPDATE或者DELETE命令之前或者之后执行

MySQL创建触发器的语法如下所示

http://developcsaicn/web/images/gif>

l 触发程序是与表有关的命名数据库对象当表上出现特定事件时将激活该对象

触发程序与命名为tbl_name的表相关tbl_name必须引用永久性表不能将触发程序与临时表(TEMPORARY)表或视图关联起来

trigger_time是触发程序的动作时间它可以是BEFORE或AFTER以指明触发程序是在激活它的语句之前或之后触发

trigger_event指明了激活触发程序的语句的类型trigger_event可以是下述值之一

()INSERT将新行插入表时激活触发程序如通过INSERTLOAD DATA和REPLACE语句

()UPDATE更改某一行时激活触发程序如通过UPDATE语句

()DELETE从表中删除某一行时激活触发程序如通过DELETE和REPLACE语句

请注意trigger_event与以表操作方式激活触发程序的SQL语句并不相似这点很重要例如关于INSERT的BEFORE触发程序不仅能被INSERT语句激活也能被LOAD DATA语句激活

对于具有相同触发程序动作时间和事件的给定表不能有两个触发程序例如对于某一表不能有两个 BEFORE UPDATE触发程序但可以有一个BEFORE UPDATE触发程序和一个BEFORE INSERT触发程序或一个BEFORE UPDATE触发程序和一个AFTER UPDATE触发程序

trigger_stmt是当触发程序激活时执行的语句如果需执行多条语句可使用BEGIN END复合语句结构这样就能使用存储子程序中允许的相同语句

以上是触发器的一些基本知识下面讲解其在实际软件开发中的应用

在本章的帖子发布功能中共使用了条SQL语句组成的一个事务来完成整个发帖操作虽然这样达到了目的但是将使得整段数据库操作的代码很复杂使用触发器可以把一些SQL语句放到数据库后台来执行这样前台的PHP程序就会更为简洁可以编写如下的触发器来完成帖子发布的一些辅助功能(更改父帖的f_has_child字段和发帖信息表的两个统计字段)

right>[] [http://developcsaicn/web/htm>]

               

上一篇:PHP网络编程:使用触发器[2]

下一篇:PHP网络编程:查看发帖排行页面[2]