日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

MySQL筆記之觸發(fā)器的應(yīng)用_MySQL教程

編輯Tag賺U幣

推薦:MySQL筆記之視圖的使用詳解
使用視圖的大部分情況是為了保障數(shù)據(jù)安全性,提高查詢效率

創(chuàng)建觸發(fā)器

創(chuàng)建只有一個(gè)執(zhí)行語句的觸發(fā)器

復(fù)制代碼 代碼如下:hl5o.cn

CREATE TRIGGER 觸發(fā)器名 BEFORE|AFTER 觸發(fā)事件
ON 表名 FOR EACH ROW 執(zhí)行語句

其中,觸發(fā)器名參數(shù)指要?jiǎng)?chuàng)建的觸發(fā)器的名字

BEFORE和AFTER參數(shù)指定了觸發(fā)執(zhí)行的時(shí)間,在事件之前或是之后

FOR EACH ROW表示任何一條記錄上的操作滿足觸發(fā)事件都會(huì)觸發(fā)該觸發(fā)器

復(fù)制代碼 代碼如下:hl5o.cn

mysql> CREATE TRIGGER trig1 AFTER INSERT
-> ON work FOR EACH ROW
-> INSERT INTO time VALUES(NOW());
Query OK, 0 rows affected (0.09 sec)

上面創(chuàng)建了一個(gè)名為trig1的觸發(fā)器,一旦在work中有插入動(dòng)作,就會(huì)自動(dòng)往time表里插入當(dāng)前時(shí)間


創(chuàng)建有多個(gè)執(zhí)行語句的觸發(fā)器

復(fù)制代碼 代碼如下:hl5o.cn

CREATE TRIGGER 觸發(fā)器名 BEFORE|AFTER 觸發(fā)事件
ON 表名 FOR EACH ROW
BEGIN
執(zhí)行語句列表
END

其中,BEGIN與END之間的執(zhí)行語句列表參數(shù)表示需要執(zhí)行的多個(gè)語句,不同語句用分號(hào)隔開

tips:一般情況下,mysql默認(rèn)是以 ; 作為結(jié)束執(zhí)行語句,與觸發(fā)器中需要的分行起沖突

   為解決此問題可用DELIMITER,如:DELIMITER ||,可以將結(jié)束符號(hào)變成||

   當(dāng)觸發(fā)器創(chuàng)建完成后,可以用DELIMITER ;來將結(jié)束符號(hào)變成;

復(fù)制代碼 代碼如下:hl5o.cn

mysql> DELIMITER ||
mysql> CREATE TRIGGER trig2 BEFORE DELETE
-> ON work FOR EACH ROW
-> BEGIN
-> INSERT INTO time VALUES(NOW());
-> INSERT INTO time VALUES(NOW());
-> END
-> ||
Query OK, 0 rows affected (0.06 sec)

mysql> DELIMITER ;


上面的語句中,開頭將結(jié)束符號(hào)定義為||,中間定義一個(gè)觸發(fā)器,一旦有滿足條件的刪除操作

就會(huì)執(zhí)行BEGIN和END中的語句,接著使用||結(jié)束

最后使用DELIMITER ; 將結(jié)束符號(hào)還原


查看觸發(fā)器
SHOW TRIGGERS語句查看觸發(fā)器信息

復(fù)制代碼 代碼如下:hl5o.cn

mysql> SHOW TRIGGERS\G;
*************************** 1. row ***************************
Trigger: trig1
Event: INSERT
Table: work
Statement: INSERT INTO time VALUES(NOW())
Timing: AFTER
Created: NULL
sql_mode:
Definer: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: latin1_swedish_ci

結(jié)果會(huì)顯示所有觸發(fā)器的基本信息

tips:SHOW TRIGGERS語句無法查詢指定的觸發(fā)器


在triggers表中查看觸發(fā)器信息

復(fù)制代碼 代碼如下:hl5o.cn

mysql> SELECT * FROM information_schema.triggers\G
*************************** 1. row ***************************
TRIGGER_CATALOG: def
TRIGGER_SCHEMA: person
TRIGGER_NAME: trig1
EVENT_MANIPULATION: INSERT
EVENT_OBJECT_CATALOG: def
EVENT_OBJECT_SCHEMA: person
EVENT_OBJECT_TABLE: work
ACTION_ORDER: 0
ACTION_CONDITION: NULL
ACTION_STATEMENT: INSERT INTO time VALUES(NOW())

結(jié)果顯示了所有觸發(fā)器的詳細(xì)信息,同時(shí),該方法可以查詢制定觸發(fā)器的詳細(xì)信息
復(fù)制代碼 代碼如下:hl5o.cn

mysql> SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME='trig1'\G
*************************** 1. row ***************************
TRIGGER_CATALOG: def
TRIGGER_SCHEMA: person
TRIGGER_NAME: trig1
EVENT_MANIPULATION: INSERT
EVENT_OBJECT_CATALOG: def
EVENT_OBJECT_SCHEMA: person
EVENT_OBJECT_TABLE: work

tips:所有觸發(fā)器信息都存儲(chǔ)在information_schema數(shù)據(jù)庫下的triggers表中

   可以使用SELECT語句查詢,如果觸發(fā)器信息過多,最好通過TRIGGER_NAME字段指定查詢


刪除觸發(fā)器

復(fù)制代碼 代碼如下:hl5o.cn

mysql> DROP TRIGGER trig1;
Query OK, 0 rows affected (0.04 sec)

刪除觸發(fā)器之后最好使用上面的方法查看一遍

同時(shí),也可以使用database.trig來指定某個(gè)數(shù)據(jù)庫中的觸發(fā)器

tips:如果不需要某個(gè)觸發(fā)器時(shí)一定要將這個(gè)觸發(fā)器刪除,以免造成意外操作

分享:MySQL筆記之字符串函數(shù)的應(yīng)用
字符串操作在程序設(shè)計(jì)中是非常重要的組成部分,而MySQL數(shù)據(jù)庫中的字符串操作卻相當(dāng)簡(jiǎn)單

來源:模板無憂//所屬分類:MySQL教程/更新時(shí)間:2013-05-04
相關(guān)MySQL教程