目录
一、触发器的魅力
二、创建触发器
1.创建AFTER触发器
2.创建BEFORE触发器
三、检察触发器
1.检察触发器
2.检察触发器的具体信息
四、删除触发器
一、触发器的魅力
同存储过程和函数类似,MySQL中的触发器也是存储在系统内部的一段程序代码,可以把它看作是一个特殊的存储过程。所差别的是,触发器无需人工调用,当程序满意定义条件时就会被MySQL主动调用。这些条件可以称为触发事件,包括INSERT、UPDATE和DELETE操纵。
触发器常被用在数据库端确保数据的完备性。比方,在具体开发项目时,常会遇到如下情况,当在用户表中插入一个新用户后,用户总书必须要主动加1。就是在对表实行某项操纵后,必要主动进行一些处理。此时就可以利用触发器处理数据库对象,可以创建一个触发器对象,每添加一条学生纪录,就实行一次计算学生总数的操纵,这样可以包管每次添加学生纪录后,学生总数与学生纪录数划一。
二、创建触发器
创建触发器的语法情势如下:
CREATE TRIGGER trigger_name trigger_time trigger_event
ON table_name FOR EACH ROW trigger_body
上述语句中,trigger_name表现触发器的名称。trigger_time表现触发器的触发时机,可以取值为BEFORE或者AFTER,BEFORE是在检查约束前触发,而AFTER是在检查约束后触发。trigger_event表现触发事件,可以是INSERT、UPDATE或者DELETE。
table_name表现创建触发器的表名。FOR EACH ROW表现数据表中任意一条纪录满意触发条件都会激活触发器。trigger_body表现触发器激活后实行的SQL语句。
注:触发器只能创建在永世表上,不能创建在临时表上。
1.创建AFTER触发器
AFTER触发器是指触发器监视的触发事件实行之后,再激活触发器,激活后所实行的操纵无法影响触发器所监视的事件。
AFTER触发器可以根据所监视的事件分为三种,分别是INSERT型、UPDATE型和DELETE型。
1.INSERT型(创建订单)
对于INSERT型触发器而言,新插入的行利用NEW表现,引用行中的字段值可以利用“NEW.字段名”。
2.UPDATE型(修改订单)
对于UPDATE型触发器而言,修改操纵之前的纪录利用OLD表现,引用此条纪录中的字段值可以利用“OLD.字段名”;修改操纵后的纪录利用NEW表现,引用此条纪录中的字段值可以利用“NEW.字段名”。
3.DELETE型(删除订单)
对于DELETE型触发器而言,被删除的一行纪录利用OLD表现,引用此条纪录中的字段值可以利用“OLD.字段名”。
2.创建BEFORE触发器
BEFORE触发器是指触发器在所监视的触发事件实行之前激活,激活后实行的操纵先于监视的事件,这样就有时机进行一些判断,或修改即将发生的操纵。
BEFORE触发器也可以根据监视事件分为三种,分别是INSERT型、UPDATE型和DELETE型。
三、检察触发器
1.检察触发器
在MySQL中,对同一个表相同触发时机的相同触发事件,只能定义一个触发器。
利用SHOW TRIGGERS语句可以检察MySQL中已经存在的触发器,根本语法情势如下:
SHOW TRIGGERS \G
查询结果中的紧张参数及其意义如下:
Trigger:表现触发器名称。
Event:表现触发器的激活事件,如INSERT、UPDATE或DELETE。
Table:表现定义触发器的表。
Statement:表现触发器体,即触发器激活时实行的语句。
Timing:表现触发器的触发时机。值为BEFORE或AFTER。
利用SHOW TRIGGERS语句不但可以检察所有触发器,也可以检察某个表上创建的触发器,其根本语法格式如下:
SHOW TRIGGERS FROM db_name LIKE ‘table_name’ \G
此中db_name表现数据库名,table_name表现表名。
另外,如果用户必要精确检察某一个触发器,也可以利用SHOW TRIGGERS语句,其根本语法情势如下:
SHOW TRIGGERS WHERE `TRIGGER` LIKE ‘trigger_name%’\G
精确检察某一个触发器时,WHERE子句中的列名TRIGGER必要利用反引号“`”,该符号位于键盘左上角。
2.检察触发器的具体信息
MySQL中所有触发器的定义都存储在系统数据库information_schema中的triggers表中,可以通过查询语句SELECT检察,具体语法情势如下:
SELECT * FROM information_schema.triggers WHERE trigger_name=’tri_name’;
紧张参数及其意义如下:
TRIGGER_SCHEMA:表现触发器所属数据库。
TRIGGER_NAME:表现触发器名。
EVENT_MANIPULATION:表现触发器的激活事件。
EVENT_OBJECT_TABLE:表现触发器所属数据表。
ACTION_ORIENTATION:表现每条纪录所发生改变都会激活触发器。
ACTION_TIMING:表现触发器实行的时机。
CREATED:表现触发器创建时间。
四、删除触发器
利用DROP TRIGGER语句可以删除MySQL中定义的触发器,根本语法情势如下:
DROP TRIGGER data_name.trigger_name;
上述语句中,data_name表现数据库名,trigger_name表现触发器名。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |