MySQL触发器 - Triggers

一、触发器

● 触发器用来在某些操作之后,“自动”执行一些操作。(比如插入了新的学生信息,那么在班级表中应该修改学生数)。

● 当insert delete update设置触发器之后,执行insert delete update操作就会自动触发设置的内容。

● 一张表最大能有6个触发器(3*2,三种操作*两种时间(before|after)) 。

1)触发器介绍

创建触发器可能需要特殊的安全访问权限,但是触发器的执行是自动的,不需要权限;该表的有执行INSERTUPDATEDELITE的权限,执行语句后触发器也会执行。
触发器能保证数据的唯一性(大小写、格式等)。触发器处理语句的优点是它总能进行处理,而且是透明的进行,与客户机应用无关。 触发器能够创建审计跟踪,使用触发器把更改(如果需要,甚至还有之前和之后的状态)记录到另一个表中。 触发器中不支持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 触发器名称触发器不能更新或覆盖,如果要修改一个触发器必须要先删除它,然后再重新创建。
posted @ 2019-10-19 21:26  ohmok  阅读(568)  评论(0)    收藏  举报