MySQL触发器的使用详解

时间:2022-8-16 作者:admin

目录
  • 1.为什么需要触发器
  • 2.触发器概述
  • 3.触发器的创建
    • 3.1语法
    • 3.2 案例演示
  • 4.查看触发器
    • 5.删除触发器
      • 总结

        1.为什么需要触发器

        有一些表是互相关联的,比如说商品表和库存表,我们对商品表的数据进行操作,那么对应的库存表还得发生变化,这样才可以保证数据的完整。如果我们是自己手动维护的话,比较麻烦。

        这个时候我们可以使用触发器,创建一个触发器,让商品信息数据的插入操作自动触发库存数据的插入操作等,这样我们就不需要担心因为忘记添加库存数据而导致数据丢失了。

        2.触发器概述

        • MySQL是从5.0.2版本开始支持触发器的
        • MySQL的触发器和存储过程一样都是嵌入到MySQL服务器的一段程序
        • 触发器是由某一个事件来触发某个操作,这些事件包括insert,delete,update事件
        • 若定义了触发程序,那么数据库执行这些语句的时候,就相当于事件发生,会自动激发触发器执行相应的操作
        • 如果对数据库中的表的数据进行插入等操作的时候,需要自动执行一些数据库逻辑的时候,我们可以用触发器来实现。

        3.触发器的创建

        3.1语法

        触发器是作用在表上的,比如说我们希望表A新增一条记录的时候就触发 触发器的执行,而且还要选择触发器是在insert语句执行之前执行触发器还是之后。

        for each row表明,每执行一次事件(insert,update或delete)就会触发一次触发器

        CREATE TRIGGER 触发器名称 
        {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名 
        FOR EACH ROW 
        触发器执行的语句块;

        说明:

        表名:表示触发器监控的对象。

        BEFORE|AFTER:表示触发的时间。BEFORE 表示在事件之前触发;AFTER 表示在事件之后触发。

        INSERT|UPDATE|DELETE:表示触发的事件。

        • INSERT 表示插入记录时触发;
        • UPDATE 表示更新记录时触发;
        • DELETE 表示删除记录时触发。

        触发器执行的语句块:可以是单条SQL语句,也可以是由BEGIN…END结构组成的复合语句块。

        3.2 案例演示

        先准备表

        CREATE TABLE test_trigger (  id INT PRIMARY KEY AUTO_INCREMENT,  t_note VARCHAR(30)  );      CREATE TABLE test_trigger_log (  id INT PRIMARY KEY AUTO_INCREMENT,  t_log VARCHAR(30)  );  

        要求:创建触发器:创建名称为before_insert的触发器,向test_trigger数据表插入数据之前,向test_trigger_log数据表中插入before_insert的日志信息。

        MySQL触发器的使用详解

        MySQL触发器的使用详解

        4.查看触发器

        查看触发器是查看数据库中已经存在的触发器的定义,状态和语法信息等

        方式一:查看当前数据库的所有触发器的定义

        show triggersG 注意,在SQLyog中,不能加上G  

        MySQL触发器的使用详解

        方式二:查看当前数据库中某一个触发器的定义

        show create trigger 触发器名  

        MySQL触发器的使用详解

        方式三:从系统库information_schema的TRIGGERS表中查询“salary_check_trigger”触发器的信息

        SELECT * FROM information_schema.TRIGGERS;  

        5.删除触发器

        触发器也是数据库对象,触发器也是用drop语句来删除

        drop trigger if exists 触发器名;  

        总结

        声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:ms173@126.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。