当前位置: 首页 > 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.jsqmd.com/news/45325/

相关文章:

  • 2025年口碑好的铁氟龙喷涂厂家最新TOP排行榜
  • 2025年11月凉亭厂家推荐榜:五家优质厂家综合对比与选择指南
  • 张家港有哪些陵园可以定制?本地及周边服务参考
  • 【2025-11-16】连岳摘抄
  • 2025年知名的除尘风机行业内知名厂家排行榜
  • ai论文工具推荐:助力科研创作效率提升的实用参考
  • ai论文软件推荐:提升写作效率的实用工具盘点
  • 【SPIE出版、EI稳定检索】2025年第一届光电材料与电子信息工程国际学术会议 (OMEIE 2025)
  • Jenkins流水线项目发布 - 详解
  • 2025年质量好的烂花天鹅绒实力厂家TOP推荐榜
  • 2025年11月校服品牌推荐榜单:一份基于权威数据的选购指南
  • 2025 年最新平衡机源头厂家推荐排行榜,自动加料/加胶/加质平衡机国产优质品牌精选自动加胶平衡机/加质平衡机/自动加质平衡机公司推荐
  • 2025年知名的立环过山车游乐设施厂家最新推荐权威榜
  • 2025年11月校服设计公司推荐榜单与选择指南:一份基于客观数据的权威列表
  • 2025年11月校服设计服务选择避坑指南:全面维度的详细解析
  • 规则的制高点:从权重调适到协议治理的AI伦理范式革命
  • 2025年11月校服定制企业推荐榜单及选择指南:一份中立客观的市场分析报告
  • 实用指南:十六、Linux网络配置
  • 2025年11月高端校服定制企业推荐榜及选择指南
  • 2025年知名的长吊引水真空机组TOP品牌厂家排行榜
  • 2025年河南注册公司收费服务权威推荐榜单:免费注册公司/注册公司费用/0元注册公司服务精选
  • 2025年11月留学生求职专家推荐评测:权威机构市场报告与选择要点
  • 2025年耐酸碱6m镀锌钢管厂家推荐及选购参考榜
  • 2025年11月留学生求职专家推荐榜单:五大权威机构综合评测与选择指南
  • Rhino 8:建模自由,从曲面安装到精度,专业建模,新手也能上手
  • 苏州刑事律所推荐:专业法律服务机构选择指南
  • 2025年知名的抽屉阻尼托底轨行业内口碑厂家排行榜
  • 苏州民间借贷纠纷律所推荐及选择参考
  • 2025年评价高的纳米大单槽用户口碑最好的厂家榜
  • 2025年心理咨询机构用户满意度排名,在线/线上心理咨询企业推荐榜单