——此文章摘自《PHP網絡編程典型模塊與實例精講》定價
¥
特價
¥
詳細>>
http://track
linktech
cn/?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>]
From:http://tw.wingwit.com/Article/program/PHP/201311/21374.html