mysql触发器
Posted code.world
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql触发器相关的知识,希望对你有一定的参考价值。
一、触发器
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、作用
二、触发器操作
测试用表
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触发器的主要内容,如果未能解决你的问题,请参考以下文章