mysql觸發器
阿新 • • 發佈:2017-05-17
觸發器 pri tails log 分開 key 語句 ble 需要
一、觸發器
1、觸發器(trigger)是一種與表操作有關的數據庫對象,該對象與編程語言中的函數非常類似,需要先聲明後執行,並由事件來觸發執行。
2、觸發器結構組成
CREATE TRIGGER trigger_name #觸發器名 trigger_time #觸發時機,取值為 BEFORE 或 AFTER trigger_event #觸發事件,取值為 INSERT、UPDATE 或 DELETE
ON tbl_name #建立觸發器的表名,即在哪張表上建立觸發器 FOR EACH ROW trigger_stmt #觸發器程序體,可以是一句SQL語句,或者用 BEGIN 和 END 包含的多條語句
3、作用
請參考mysql觸發器的作用及語法
二、觸發器操作
測試用表
CREATE TABLE `t_dept` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `dname` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=latin1
CREATE TABLE `t_diary` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `createtime` datetime NOT NULL, `dept` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=latin1
1、創建
CREATE TRIGGER tri_dept#觸發器名 BEFORE INSERT #觸發時間(有BEFORE、AFTER)、事件(有INSERT、DELETE、UPDATE) ON t_dept FOR EACH ROW #觸發器作用的表 BEGIN #激活觸發器後執行的語句,可以是多條,以";"分開 INSERT INTO t_diary VALUES (NULL, NOW(), new.dname); #new.dname為觸發事件的列 END
觸發器實現在向t_dept表中插入數據前先向t_diary中插入一條數據
CREATE TRIGGER tri_dept_add AFTER INSERT ON t_dept FOR EACH ROW BEGIN UPDATE t_diary SET dept = concat(dept ,new.dname) WHERE id = 32; END
2、查看
SHOW TRIGGERS;
3、刪除
DROP TRIGGER 觸發器名; #如DROP TRIGGER tri_dept_add;
mysql觸發器