ToB企服应用市场:ToB评测及商务社交产业平台

标题: 数据库之触发器 [打印本页]

作者: 大连全瓷种植牙齿制作中心    时间: 2024-12-4 17:51
标题: 数据库之触发器
目录
一、触发器的魅力
二、创建触发器
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企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4