MySQL 的 Trigger 滿好用的
有的時候有些程式邏輯實在是不想在 PHP 等前端程式做處理,原因有很多。例如這個系統是買來的商用系統,自己本身無法掌握所有的程式細節,因此怕改錯一個地方系統就整個完蛋但又不想浪費時間耗時的測試,這時就可以試著將一些程式邏輯推遲到資料庫這層來處理(也就是不用去改前端的 PHP 程式)。
MySQL 的 Trigger 功能可以在你對於 record 進行處理時,觸發特定的事件。舉個例子,若是資料表中有個欄位(eg. dateline)的 Data Type 是 datetime,那麼它的預設值就必定要是常數(constant)。這樣一來若是你要利用這個欄位來記錄這筆 record 被修改的時間,你勢必要在程式端(PHP 等)修改 record 的時候自行取得現在的 "時間",然後再寫入到資料庫中。若是改用 Trigger 來處理,我們可以告訴資料庫當某個資料表的 record 被 update 的時候,請資料庫自動取得現在的 "時間" 並寫入 dateline 欄位中,這樣子一來就等同於讓 datetime 這個欄位的 Default Value 變成 CURRENT_TIMESTAMP。 範例: PHP 語法:
從範例中還可以看出我們可以在 Trigger 中對即將寫入 DB 的新資料,與原本就存在 DB 中的舊料進行處理。新的(將要寫入的)資料運用方式就是 NEW.資料表的欄位;而原本就存在的資料則是透過 OLD.資料表的欄位 來運用。 當然 Trigger 中也可以使用程式邏輯,例如在下面這個 Trigger 中使用了 IF 這個判斷式: PHP 語法:
透過 Trigger 就可以處理許多以前必需要在程式端處理的問題,十分的方便。 |
所有時間均為台北時間。現在的時間是 10:07 AM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *