MySQL触发器 - Triggers
一、触发器
● 触发器用来在某些操作之后,“自动”执行一些操作。(比如插入了新的学生信息,那么在班级表中应该修改学生数)。
● 当insert delete update设置触发器之后,执行insert delete update操作就会自动触发设置的内容。
● 一张表最大能有6个触发器(3*2,三种操作*两种时间(before|after)) 。
1)触发器介绍
创建触发器可能需要特殊的安全访问权限,但是触发器的执行是自动的,不需要权限;该表的有执行INSERT、UPDATE、DELITE的权限,执行语句后触发器也会执行。
触发器能保证数据的唯一性(大小写、格式等)。触发器处理语句的优点是它总能进行处理,而且是透明的进行,与客户机应用无关。 触发器能够创建审计跟踪,使用触发器把更改(如果需要,甚至还有之前和之后的状态)记录到另一个表中。 触发器中不支持CALL语句。
二、触发器使用
1)创建
CREATE TRIGGER 触发器名 [BEFORE|AFTER] 事件 ON 表名 FOR EACH ROW 触发语句;
- 触发器名建议为trigger_xxx,这样便于区分,触发器名不能重复。
- before | after 代表触发器语句执行事件,before 是在insert delete update操作之前执行触发语句,after就是之后触发执行语句。
- 事件就是insert delete update操作中的一个
- for each row 是代表任合记录执行对应操作都会触发器
-- 当插入新用户时,在用户创建时间表中插入一条新数据,是当前时间。 create trigger tirgger_tName after insert on db_user for each row insert into usercreatetime(create_time) values(now()); -- 创建多条执行语句的触发器 DELIMITER $$ -- 设置结束标记 CREATE TRIGGER 触发器名 BEFORE INSERT ON 表名 FOR EACH ROW BEGIN 执行语句1; 执行语句2; END $$ DELIMITER ;
2)查看
- SHOW TRIGGERS\G;查看所有触发器
- SHOW CREATE TRIGGER 触发器名称\G;查看触发器创建语句
- SELECT * FROM TRIGGER\G;查看触发器,可以使用WHERE条件查找数据
3)删除
- DROP TRIGGER 触发器名称;触发器不能更新或覆盖,如果要修改一个触发器必须要先删除它,然后再重新创建。

浙公网安备 33010602011771号