MySql:触发器

触发器

一、触发器的定义:

  触发器是个特殊的存储过程,不同的是,执行存储过程要使用CALL语句来调用,而触发器的执行不需要使用CALL语句来调用,也不需要手工启动,只要当一个预定的事件发生时,就会被MySQL调用

二、创建触发器

总语法:
CREATE
    [DEFINER = { user | CURRENT_USER }]
    TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_body

trigger_name:标识触发器的名称,用户自行定义;
trigger_time:标识触发器的时机,可以指定为before或after 
trigger_event:标识触发事件,包括INSERT、UPDATE和DELETE
tbl_name:标识建立触发器的表名,即在那张表上建立触发器
trigger_body:触发器程序体
【例】

 mysql> create trigger ints_sum before insert on account for each row set
 @sum=@sum+new.amount;

作用:对插入的amount字段进行求和
注意:不能少了“@”;

三、查看触发器

语法:
(1)show 语法-----适用与触发器较少情况
SHOW TRIGGERS [{FROM | IN} db_name]
   [LIKE 'pattern' | WHERE expr]
{FROM | IN}db_name:标识库名
LIKE 'pattern' | WHERE expr:标识查询条件
   【例】

mysql> show triggers\G;
*************************** 1. row ***************************
             Trigger: ints_sum
               Event: INSERT
               Table: account
           Statement: set @sum=@sum+new.amount
              Timing: BEFORE
             Created: 2018-01-12 08:54:45.25
            sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
             Definer: root@localhost
character_set_client: gbk
collation_connection: gbk_chinese_ci
  Database Collation: utf8_general_ci

(2)使用triggers表查询
语法:
mysql> select * from information_schema.triggers where 条件;
【例】

mysql> select * from information_schema.triggers where trigger_name='INTS_sum'\G;

四、删除触发器

语法:
DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name
schema_name.表示库名
【例】

mysql> drop trigger ints_sum;
 

猜你喜欢

转载自www.cnblogs.com/hahayixiao/p/10199216.html