引言:
觸發器的作用就不用說了吧,也許你在sqlserver或者其他的數據庫里頭早就用過觸發器拉.所以這里直接介紹mysql5下怎
么使用觸發器.具體的語法細則這里也不說,可以到搜索引擎里頭搜索"mysql5
觸發器",一大堆的參考資料,不過基本上是一個出身,都只簡單介紹了語法.沒有太多實際的例子.下面就從實際例子出發來學習一下哦.
正文:
我們先假設我們有這樣一個用戶信息表、用戶評價表:
[說明:我們的表可能建得不大規范,不要追究這個,因為僅僅是個演示觸發器的例子哦]
表名:(用戶表)User_tab、(用戶評價表)User_score
User_tab表結構如下:
字段名 字段類型 鍵 備注
用戶編號(id) int pk auto_increment
登陸名(login_name) varchar(20) not null
登陸密碼(login_pw) varcahr(20) not null
加密密碼(login_enc_pw) varchar(32)
注冊時間(reg_time) datetime
User_score表結構如下:
用戶編號(id) int fk User_tab(id)
用戶評價(score) int
我們對該表有如下操作:
1)在用戶注冊的時候需要用戶輸入登陸名、登陸密碼,用戶編號,加密密碼和注冊時間由系統自動更新
2)假如我們要刪除某個用戶信息,那么該用戶的評價信息也得刪除,我們也讓系統自動實現
先創建這兩個表哦,代碼就不列出拉。
下面我們為了讓系統自動實現這些東西,寫兩個觸發器
1)觸發器一[更新操作]
功能:在插入用戶的登陸名和登陸密碼進入數據庫之后,系統自動更新該用戶的注冊時間和加密密碼信息(用戶編號不用我們做,是因為我們設置了auto_increment,所以系統會自增)
名字:User_tab_before_insert(表名_觸發時機_操作)
代碼:
Code:
[Ctrl+A Select All]
2)觸發器二[刪除操作]
功能:在刪除某個用戶信息之后,系統自動刪除該用戶的評價信息
名字:User_tab_before_delete
代碼:
Code:
[Ctrl+A Select All]
總結:
到這里我們要用的觸發器的功能基本實現拉。我們通常要用戶要做的操作也就這些:自動實現某些功能,以維護數據庫的完整性和一致性。
需要補充的是,在創建那些需要觸發器更新的數據的時候,請不要設置not null,否則,由于在插入時會出錯。因為它在觸發器起作用之前為空。
由于本人水平有限,如有問題,請批評指正,謝謝
為了保持參照完整性,可以通過在對應具有外鍵約束的字段后面增加ON DELETE CASCADE
具體參考這個
《在MySQL中利用外鍵實現級聯刪除!》
http://www.chinaunix.net/jh/17/462977.html