MySql:触发器

Posted 前路漫漫,迷途而行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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[email protected]+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 triggersG;
*************************** 1. row ***************************
             Trigger: ints_sum
               Event: INSERT
               Table: account
           Statement: set @[email protected]+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: [email protected]
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_sumG;技术分享图片

四、删除触发器

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

mysql> drop trigger ints_sum;技术分享图片
 

以上是关于MySql:触发器的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 vscode 的代码片段,以便在自动完成后自动触发 vscode 的智能感知?

片段创建的 Intent 不会触发 onNewIntent

导航到另一个片段时触发 API 调用

我如何使用 codeanywhere 片段

前端防扒代码片段

前端防扒代码片段