史萊姆論壇
(
http://forum.slime.com.tw/)
-
論壇程式討論區
(
http://forum.slime.com.tw/f79.html)
- -
06. Triggers
(
http://forum.slime.com.tw/thread222695.html)
Admin1 |
2007-12-27 03:28 PM |
06. Triggers
Triggers
使用Triggers的好處:forum$slime&com(tw- 可以檢驗即將新增、修改或刪除的row values。
- 可以改變即將新增、修改的row values,因此可做為data filter。
- 可以改變INSERT、DELETE、UPDATE的預設行為,例如可以將任何temporal column的預設值設定為current time(本來只有TIMESTAMP data type才有這功能)。
TRIGGER的類別:forum$slime&com(tw
一個 table可以有多個 trigger,但同一種類型的 trigger只能有一個。
建立TRIGGER的語法:forum$slime&com(twCREATE TRIGGER trigger_name
{BEFORE | AFTER}
{INSERT | DELETE | UPDATE}
ON table_name
FOR EACH ROW
trigger_statement;
註:其中 "FOR EACH ROW" 是指每個被INSERT、DELETE或UPDATE的row,而不是指目前table中所包含的所有的row。
範例:forum$slime&com(tw
DELIMITER //
CREATE TRIGGER slime_bu
BEFORE UPDATE
ON slime
FOR EACH ROW
BEGIN
SET @var_name = OLD.name;
END;
//
註:當TRIGGER執行完後,user varibles(@var_name)即會被設定,可以使用SELECT @var_name來查看其內容。
TRIGGER的限制:forum$slime&com(tw- 無法START或COMMIT TRANSACTION。
- 無法針對TEMPERARY table或VIEW建立TRIGGER。
- 當MySQL Server啟用Binary Log時,會有與Stored Routines同樣的限制。
Referring to OLD and NEW Column Values:forum$slime&com(tw
刪除TRIGGER:- 使用DROP TRIGGER db_name.trigger_name明確的刪除TRIGGER。
- 刪除TRIGGER所依附的table,則會連帶刪除TRIGGER。
- 刪除TRIGGER所依附的table所屬的database,也會連帶刪除TRIGGER。
使用TRIGGER所需要的權限:forum$slime&com(tw
參考資料: www^slime^com^tw
Paul Dubois, Stefan Hinz, Carsten Pedersen(2005), “MySQL 5.0 Certification Study Guide.”
|
所有時間均為台北時間。現在的時間是 08:11 PM。 |
|
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *