当前位置: 首页 > news >正文

MySQL_触发器

无奋斗不青春

课 程 推 荐
我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库教程合集 👈👈
MySQL数据库教程:👉👉 MySQL数据库教程合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈
优 质 教 程 推 荐:👉👉 Python爬虫从入门到入狱系列 合集 👈👈
.

分隔线
在这里插入图片描述

MySQL_触发器

        • 触发器

触发器
  • 触发器的引入
  • 创建与使用触发器
  • 查看触发器
  • 删除触发器

  • 触发器的引入
  • 触发器(TRIGGER)是由事件来触发某个操作。这些事件包括 INSERT 语句、UPDATE 语句和 DELETE 语句。当数据库系统执行这些事件时,就会激活触发器执行相应的操作。

  • 创建与使用触发器
  • 创建只有一个执行语句的触发器
    CREATE TRIGGER 触发器名 BEFORE | AFTER 触发事件ON 表名 FOR EACH ROW执行语句
    
  • 创建有多个执行语句的触发器
    DELIMITER &&
    CREATE TRIGGER 触发器名 BEFORE | AFTER 触发事件ON 表名 FOR EACH ROWBEGIN执行语句1;执行语句2;执行语句3;...执行语句4;END
    &&
    DELIMITER ;
    
  • 参数说明
    -- BEFORE:在触发事件发生之前
    -- AFTER:在触发事件发生之后
    -- ON 表名 FOR EACH ROW:指定表的每一行执行触发事件都执行下面的执行语句
    -- DELIMITER:定义结束符。其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。
    
  • 示例1(创建一个执行语句的触发器)
    • 先在t_bookType表增加bookNum字段,用于统计该类型书本的数量
    • 创建触发器,在t_book表中新增书籍,t_booktype表中的书本数量根据新增书籍的类型相应增加
    CREATE TRIGGER trig_book AFTER INSERTON t_book FOR EACH ROWUPDATE t_booktype SET booknum=COALESCE(booknum,0)+1 WHERE new.booktypeid=t_booktype.id
    
    • 触发器解释
    CREATE TRIGGER trig_book AFTER INSERT
    -- 创建触发器,命名trig_book,指定在insert操作之后执行ON t_book FOR EACH ROW
    -- 指定t_book表每一行执行insert操作都将执行下面的执行语句UPDATE t_booktype SET booknum=COALESCE(booknum,0)+1 WHERE new.booktypeid=t_booktype.id
    -- insert执行之后要执行的执行语句new.booktypeid=t_booktype.id
    -- new:过渡变量,指代刚刚插入(更新)的那一条数据
    -- old:过渡变量,指代刚刚删除的那一条数据
    
  • 示例2(创建多个执行语句的触发器)
    • 创建t_log表,用于记录操作
    • 创建t_test表,用于测试执行语句
    -- 定义结束符为|,告诉MYSQL解释器出现|,则表示该段代码结束了,可以执行了
    DELIMITER |
    CREATE TRIGGER trig_book2 AFTER DELETEON t_book FOR EACH ROW
    BEGINUPDATE t_booktype SET booknum=COALESCE(booknum,0)-1 WHERE old.booktypeid=t_booktype.id;INSERT INTO t_log VALUES(NULL,NOW(),'在t_book表中删除了一条数据');DELETE FROM t_test WHERE old.booktypeid=t_test.id;
    END
    -- 告诉MYSQL解释器,该段代码结束了,可以执行了
    |
    -- 将MYSQL的结束符重新定义为 ;
    DELIMITER ;
    

  • 查看触发器
  • SHOW TRIGGERS 语句查看所有触发器信息
    show triggers;
    
  • 在系统表 triggers 表中查看触发器信息
    • 请添加图片描述

  • 删除触发器
    DROP TRIGGERS 触发器名;
    

http://www.mrgr.cn/news/39512.html

相关文章:

  • 建筑物变化检测算法baseline工程,开箱即用,23年5月测试准确度超越阿里云aiearth
  • JavaWeb——Vue组件库Element(3/6):常见组件:Dialog对话框、Form表单(介绍、使用、实际效果)
  • 计算机视觉周边技术解析:从基础到前沿
  • Github 2024-09-30 开源项目周报 Top15
  • 初始MYSQL数据库(8)—— JDBC编程
  • jQuery UI 工作原理
  • 实战OpenCV之边缘检测
  • 【C++】多态(上)
  • 什么是区块链?
  • ISA-95制造业中企业和控制系统的集成的国际标准-(2)
  • 使用 Vue3 和 Axios 实现 CRUD 操作
  • spring全家桶使用教程
  • Stable Diffusion绘画 | 来训练属于自己的模型:素材处理与打标篇
  • PIKACHU | PIKACHU 靶场 XSS 后台配置
  • Spring - @Import注解
  • 读数据湖仓03不同类型的数据
  • Mixture-of-Experts (MoE): 条件计算的诞生与崛起【下篇】
  • Redis 基础数据改造
  • 讯飞星火编排创建智能体学习(三):搜索工具
  • Python面向对象基础:类与对象