阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL 触发器详解

153次阅读
没有评论

共计 1602 个字符,预计需要花费 5 分钟才能阅读完成。

触发器和存储过程一样,都是嵌入到 MySQL 的一段程序。不同的是,执行存储过程需要使用 CALL 语句来调用,而触发器是由事件触发某些操作,这些事件包括 INSERT、UPDATE、DELETE。一旦定义了触发程序,当数据库执行这些语句时,就会激发触发器执行相应的操作。本文将通过实例介绍触发器的定义、创建、查看以及删除。

  • 创建触发器

触发器可以查询其他表,而且可以包含复杂的 SQL 语句,用于满足复杂的业务规则或要求。但在触发器中不能对被触发表进行操作。如下是触发器的创建语法:

CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOR EACH ROW trigger_statement

其中 trigger_name 表示触发器名称;trigger_time 表示触发器时机,可以指定为 BEFORE 或 AFTER;trigger_event 标识触发事件,包括 INSERT、UPDATE 和 DELETE;tb_name 标识在哪张表上建立触发器;trigger_statement 是触发程序体。触发程序可以使用 BEGIN 和 END 作为开始和结束,中间包含多条语句。

我们在以往的学生成绩表上创建一个触发器,该触发器记录最新插入的数据信息,代码执行如下:

创建触发器:CREATE TRIGGER p_in AFTER INSERT ON tb_score

 FOR EACH ROW BEGIN

 SET @info=CONCAT(‘studentID=’, NEW.sID, ‘, classID=’, NEW.cID, ‘, grade=’, NEW.grade);

 END //

向 tb_score 表中插入值:INSERT INTO tb_score VALUE(3,1,88);

查看变量 @info 的值:SELECT @info;

MySQL 触发器详解

  • 查看触发器

查看触发器是指查看数据库中已经存在的触发器的定义、状态和语法信息等。本节将介绍两种查看触发器的方法,分别是 SHOW TRIGGERS 和在 triggers 表中查看触发器信息。

  1. SHOW TRIGGERS 语句查看触发器信息,语法格式为:SHOW TRIGGERS\G;MySQL 触发器详解

  2. 当触发器较少时,可以通过 SHOW TRIGGERS 查看。如果触发器很多,且需要查看特定触发器的信息,则通过在 information_schema 数据库中的 triggers 表中查找更方便。具体语法格式如下:

SELECT * FROM information_schema.trigger WHERE condition; 不指定 condition 则默认查询所有的触发器。

如查看指定名称的触发器的详细信息:SELECT * FROM information_schema.triggers WHERE trigger_name=’p_in’\G;

MySQL 触发器详解

如上执行结果显示:TRIGGER_SCHEMA 表示触发器所在的数据库;TRIGGER_NAME 表示触发器的名称;EVENT_OBJECT_TABLE 表示在哪个数据表上触发;ACTION_STATEMENT 表示触发器触发时执行的具体操作;ACTION_ORIENTATION 表示在每条记录上都触发;ACTION_TIMING 表示触发的时刻是 AFTER。

  • 删除触发器

使用 DROP TRIGGER 语句删除 MySQL 中已经存在的触发器,基本语句格式为:DROP TRIGGER [schema_name.]trigger_name;

如想删除创建的 p_in 触发器,只需执行:DROP TRIGGER test.p_in;

MySQL 触发器详解

  • 注意事项

  在使用触发器时,对于一张表的相同事件只能创建一个触发器。如对表 tb_score 的 BEFORE INSERT 事件只能创建一个触发器。及时删除不需要的触发器。

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-04/142498.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1602字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中