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

26、触发器

1、SQL 触发器(Trigger)

是一种特殊的存储过程,它在数据库发生特定事件(如 INSERTUPDATEDELETE)时自动执行,无需显式调用。

  • 触发器与表相关联,当对表执行 INSERT、UPDATE 、DELETE 或 TRUNCATE 操作之前或之后,触发器自动触发。
  • 触发器常用于实现数据完整性、审计日志、业务规则自动化等场景。

1)创建触发器:

CREATE TRIGGER trigger_name                 -- 创建触发器,指定触发器的名称。
{BEFORE | AFTER} {INSERT | UPDATE | DELETE} -- 设置触发器应何时响应特定事件
ON table_name                               -- 提供触发器关联的表的名称。
[FOR EACH ROW]                              -- 定义触发器的类型。
[WHEN (condition)]
BEGIN-- 触发器逻辑,定义触发器要执行的具体 SQL 语句,可以包含多条 SQL 语句END;

触发时机

  • BEFORE:在事件发生之前执行

  • AFTER:在事件发生之后执行

触发事件

  • INSERT:插入数据时触发

  • UPDATE:更新数据时触发

  • DELETE:删除数据时触发

触发器类型

触发器类型语法触发频率典型用途
行级触发器 FOR EACH ROW 每处理一行数据,触发器就执行一次。

在触发器内部,可以使用:

  • NEW:表示新插入或更新后的行(INSERT/UPDATE 可用)
  • OLD:表示更新前或删除的行(UPDATE/DELETE 可用)

只有行级触发器才能使用 NEWOLD

语句级触发器 FOR EACH STATEMENT(默认) 整个 DML 语句只触发一次 记录操作日志、发送通知、统计操作次数

如:

-- 新建触发器,当新增员工时,自动记录到审计日志
CREATE TRIGGER tr_after_employee_insert   -- 创建触发器
AFTER INSERT ON employees     -- AFTER:触发时机,在操作之后执行,INSERT:触发事件,当执行 INSERT 操作时,ON employees:关联的表名
FOR EACH ROW       -- 触发器类型:行级触发器

-- 触发器逻辑,定义触发器要执行的具体 SQL 语句,可以包含多条 SQL 语句 BEGININSERT INTO audit_log (table_name, action_type, employee_id, change_date, new_value) --向 audit_log 表插入记录,表要事先创建完成,否则触发器会执行失败VALUES ('employees', 'INSERT', NEW.employee_id, NOW(), -- NEW. 代表新插入的数据行CONCAT('New employee: ', NEW.first_name, ' ', NEW.last_name)); --CONCAT()将多个字符串连接成一个完整的描述。 END;

向 employees 表插入数据:

--新增员工
INSERT INTO employees (employee_id, first_name, last_name, department, salary)
VALUES (101, 'John', 'Doe', 'IT', 50000);-- 生成的数据
employee_id | first_name | last_name | department | salary
------------|------------|-----------|------------|--------
101         | John       | Doe       | IT         | 50000

触发器自动执行后的结果:

--audit_log 表(自动生成):
log_id | table_name | action_type | employee_id | change_date           | new_value
-------|------------|-------------|-------------|----------------------|--------------------------
1      | employees  | INSERT      | 101         | 2024-01-15 10:30:25  | New employee: John Doe

执行流程:

  1. 用户执行:INSERT INTO employees ...

  2. 数据库执行:

    • 首先执行实际的 INSERT 操作

    • 数据插入到 employees 表

  3. 触发器检测:数据库检测到 AFTER INSERT 条件满足

  4. 触发器执行:自动执行 BEGIN ... END 中的逻辑

  5. 结果:审计记录插入到 audit_log 表

http://www.zskr.cn/news/54946.html

相关文章:

  • 2025年口碑好的铁氟龙喷涂厂家最新TOP排行榜
  • 张家港有哪些陵园可以定制?本地及周边服务参考
  • 【SPIE出版、EI稳定检索】2025年第一届光电材料与电子信息工程国际学术会议 (OMEIE 2025)
  • 2025年质量好的烂花天鹅绒实力厂家TOP推荐榜
  • 2025年11月校服定制企业推荐榜单及选择指南:一份中立客观的市场分析报告
  • 2025年知名的长吊引水真空机组TOP品牌厂家排行榜
  • 2025年河南注册公司收费服务权威推荐榜单:免费注册公司/注册公司费用/0元注册公司服务精选
  • 2025年耐酸碱6m镀锌钢管厂家推荐及选购参考榜
  • 2025年11月留学生求职专家推荐榜单:五大权威机构综合评测与选择指南
  • 2025年上海婚姻律所权威推荐榜单:离婚律所/房产律所/婚姻律所专业律师事务所精选
  • 2025年心理咨询机构用户满意度排名,在线/线上心理咨询企业推荐榜单
  • 2025年合肥快餐配送服务商TOP10权威推荐榜单
  • 2025年心理咨询哪家靠谱?权威测评结果公布,在线/线上心理咨询服务商推荐
  • 2025年质量好的镀锌钢格栅排水沟厂家最新推荐排行榜
  • 2025CMDB平台建设与选型指南:从数据治理到智能运维的价值实现,如何选对适配企业的配置管理方案?
  • 2025年精密激光焊接机供货厂家权威推荐榜单:激光焊接/自动激光焊接机/模具激光焊接机源头厂家精选
  • MarkDown基础的使用(面向用户小白)
  • 2025年比较好的学校工装定制用户口碑最好的厂家榜
  • 2025年质量好的婚礼激光灯用户好评厂家排行
  • 2025年知名的双功能缓冲隐藏轨厂家推荐及选购指南
  • 2025年知名的白刚玉炉料厂家实力及用户口碑排行榜
  • 企业数字化转型的必备工具:自动同步文件的软件解析
  • 2025年质量好的中高压密集型母线槽TOP品牌厂家排行榜
  • OSPF 的 5 种核心分组类型
  • Linux 系统CPU 100% 怎么办?如何处理?
  • 2025年上海房产继承律师权威推荐榜单:婚姻律师/离婚律师/房产律师事务所精选
  • 高定服装加盟哪家强?2025年权威榜单出炉,高定服装加盟哪家好聚焦优质品牌综合实力排行
  • 2025年知名的发光标识标牌TOP品牌厂家排行榜
  • 2025年11月中国油浸式变压器/高低压成套设备/箱式变电站/干式变压器/箱式变压器厂家权威排名榜单:力王电气集团有限公司荣登榜首
  • 2025年市场上毛肚自动化设备供应商口碑排行榜