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_sum‘G;
四、删除触发器
语法:
DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name
schema_name.表示库名
【例】
mysql> drop trigger ints_sum;
以上是关于MySql:触发器的主要内容,如果未能解决你的问题,请参考以下文章