MySQL基础 -- 触发器

目录

一 、触发器的介绍

        1、定义

2、触发器创建语法的四要素:

3、触发器和存储过程

二、语法

1、简单语法

2、判断条件后调用

3、update触发器


一 、触发器的介绍

1、定义:监控某种情况,然后触发某些操作,是特殊的存储过程(由事件触发)

2、触发器创建语法的四要素:

  • 监控地点(table)
  • 监控事件(insert/delete/update)
  • 触发时间(after/before)
  • 触发事件(insert/delete/update)

3、触发器和存储过程

  • 触发器是事件触发,在无形中增加了数据库的复杂度,非DBA人员难以理解;而存储过程是显性调度;
  • 触发器容易出现死锁,而且对性能也没提升多少;
  • 存储过程和触发器都难以开发和维护,并且不能高效移植;
  • 触发器可用事务替代,存储过程可用后端脚本替代;

二、语法

1、简单语法

create trigger 触发器名
[after/before] [insert/delete/update] on 表名
for each row
触发器执行的语句块  

2、判断条件后调用

if 判断条件 then 
    SQL语句
end if

假如判断条件为 插入时间大于20小时,即

Hour(new.RecordTime)='20'

#RecordTime是date类型,如‘2016-08-12 20:12:08’

#判断日期为某天或者某年某月
date_format(new.Recordtime,'%Y-%m-%d'

3、update触发器

题目:当插入消费数据时,按小时统计学生的消费金额、用电量等

after insert on 表 for each row
begin 
    update stucosthyhour//更新学生每小时花费金额
    set hourcost = hourcost + new.cost//
    where (timejd = hour(new.recordtime) + 1) 
    and date_format(new.recordtime,'%Y-%m-%d')=date_format(RecordTime,'%Y-%m-%d');
end

你可能感兴趣的:(MySQL,数据库)