风哥教程

培训 . 交流 . 分享
Make progress together!

MySQL触发器详解

[复制链接]
内容发布:luashin| 发布时间:2017-6-8 20:28:01
MySQL触发器详解

    触发器和存储过程一样,都是嵌入到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;


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

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;


  如上执行结果显示: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;


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



上一篇:MySQL视图的基本操作
下一篇:MySQL修改表结构
回复

使用道具 举报

1框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门文章教程

  • Oracle19c数据库发布与下载地址
  • 风哥Oracle数据库巡检工具V1.0(附2.6网页
  • Oracle Database 12c 数据库100个新特性与
  • Oracle 12cR2 九大新功能全面曝光_详解云数
  • 实战PHP与MySQL权威指南PDF电子书下载
  • 大数据技术与应用入门培训教程(电子版下载
快速回复 返回顶部 返回列表