1. 程式人生 > >mysql觸發器

mysql觸發器

觸發器 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觸發器