首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2024 Mysql基础与进阶操作系列之MySQL触发器详解(20)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]

2024 Mysql基础与进阶操作系列之MySQL触发器详解(20)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]

作者头像
盛透侧视攻城狮
发布2025-05-19 18:12:11
发布2025-05-19 18:12:11
32200
代码可运行
举报
运行总次数:0
代码可运行

1.MySQL触发器详解

  • 数据库触发器是一种在特定数据操作(如插入、更新或删除)发生时自动执行的动作。本文将介绍MySQL触发器的基础知识和使用方法。

1.1MySQL触发器基础 触发器分类 MySql执行时机和数据操作类型分类表 按执行时机分类 BEFORE触发器:在数据操作之前执行触发器逻辑 AFTER触发器:在数据操作之后执行触发器逻辑 按数据操作类型分类INSERT触发器:在插入数据之前或之后执行触发器逻辑 UPDATE触发器:在更新数据之前或之后执行触发器逻辑 DELETE触发器:在删除数据之前或之后执行触发器逻辑 额外补充举例:

  • BEFORE INSERT触发器可以用于在插入数据之前验证数据完整性
  • AFTER UPDATE触发器可以用于记录数据变更日志等

2.基础常用关键字

BEFORE:

表示在数据操作之前执行触发器逻辑 1.BEFORE: -- 在插入数据之前执行的逻辑 CREATE TRIGGER `trigger_before_insert` BEFORE INSERT ON `mytable` FOR EACH ROW BEGIN END;

AFTER:

表示在数据操作之后执行触发器逻辑 2.AFTER: -- 在更新数据之后执行的逻辑END; CREATE TRIGGER `trigger_after_update` AFTER UPDATE ON `mytable`FOR EACH ROWBEGIN

FOR EACH ROW:

表示针对每一行数据执行触发器逻辑 3.FOR EACH ROW: -- 针对每一行删除操作执行的逻辑 CREATE TRIGGER `trigger_for_each_row` AFTER DELETE ON `mytable` FOR EACH ROW BEGIN END;

BEGIN和END:

用于定义触发器的逻辑代码块 4.BEGIN和END: CREATE TRIGGER `trigger_multiple_statements` AFTER INSERT ON `mytable` FOR EACH ROW BEGIN DECLARE var INT; SET var = NEW.age + 10; IF (var > 50) THEN -- 逻辑语句1 ELSE -- 逻辑语句2 END IF; END;

NEW:

代表要插入、更新或删除的新数据引用。可以通过NEW来访问新值 5.NEW: CREATE TRIGGER `trigger_new_value` BEFORE INSERT ON `mytable` FOR EACH ROW BEGIN SET NEW.name = UPPER(NEW.name); END;

OLD:

代表要更新或删除的旧数据引用。只能在UPDATE和DELETE触发器中使用 6.OLD: CREATE TRIGGER `trigger_old_value` BEFORE UPDATE ON `mytable` FOR EACH ROW BEGIN IF (OLD.age < NEW.age) THEN -- 逻辑语句 END IF; END;

SET:

用于设置变量的值,可用于对NEW或OLD的字段进行赋值操作 7.SET: CREATE TRIGGER `trigger_set_value` AFTER INSERT ON `mytable` FOR EACH ROW BEGIN SET @total = @total + NEW.quantity; END;

IF和THEN:

用于条件判断,控制触发器逻辑的执行流程 8.IF和THEN: CREATE TRIGGER `trigger_if_then` BEFORE DELETE ON `mytable` FOR EACH ROW BEGIN IF (OLD.age > 30) THEN -- 逻辑语句1 ELSE -- 逻辑语句2 END IF; END;

INSERT、UPDATE、DELETE:

分别表示插入、更新和删除操作的关键字,可用于在相应类型的触发器中执行相应的逻辑[不在举例;往期已经详解]

3.如何定义触发器

语法格式:

代码语言:javascript
代码运行次数:0
运行
复制
 -- 触发器逻辑

CREATE TRIGGER trigger_name{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_nameFOR EACH ROWBEGIN   END;
触发器定义之选项参数详解说明表:

选项参数

详解说明

trigger_name:

触发器的名称,你可以根据需要自定

{BEFORE | AFTER}:

指定触发器在数据操作之前(BEFORE)或之后(AFTER)执行

{INSERT | UPDATE | DELETE}:

指定触发器在哪种类型的数据操作时触发,可以是插入数据(INSERT)、更新数据(UPDATE)或删除数据(DELETE)

table_name:

指定触发器所属的表名

FOR EACH ROW:

确保触发器逻辑应用于每一行受影响的数据

BEGIN 和 END:

定义了触发器逻辑的开始和结束位置,你可以在其中编写相应的代码来实现需要的业务逻辑

3.2如何创建和删除触发器

创建触发器语法格式:
代码语言:javascript
代码运行次数:0
运行
复制
CREATE TRIGGER trigger_name ...
删除触发器语法格式:
代码语言:javascript
代码运行次数:0
运行
复制
DROP TRIGGER IF EXISTS trigger_name;

3.3触发器的执行时机和对应条件

触发器的执行时机和对应条件表 BEFORE触发器:在数据操作之前执行 AFTER触发器:在数据操作之后执行 FOR EACH ROW:对每一行数据执行触发器逻辑

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.MySQL触发器详解
  • 2.基础常用关键字
  • 3.如何定义触发器
    • 语法格式:
      • 触发器定义之选项参数详解说明表:
    • 3.2如何创建和删除触发器
      • 创建触发器语法格式:
      • 删除触发器语法格式:
    • 3.3触发器的执行时机和对应条件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档