大数据知识体系
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
  • MySQL

    • MySQL 视图
    • MySQL 存储过程
    • MySQL 触发器
      • 介绍
      • 语法
        • 创建
        • 查看
        • 删除
    • MySQL 事务
    • MySQL 存储引擎
    • MySQL 索引
    • MySQL 锁
    • MySQL 日志
    • MySQL 主从复制
    • MySQL 分库分表
    • MySQL 读写分离
    • MySQL 性能分析
    • MySQL SQL执行顺序
    • MySQL 优化
  • Redis

    • Redis 概述
    • Redis 面试题
  • HDFS

    • HDFS 概述
    • HDFS 面试题
  • HBase

    • HBase 概述
    • HBase 面试题
  • ClickHouse

    • ClickHouse 概述
    • ClickHouse 安装
    • ClickHouse 数据类型
    • ClickHouse 引擎
    • ClickHouse 踩坑
  • ElasticSearch

    • ElasticSearch 概述
    • ElasticSearch 面试题
  • 数据存储
  • MySQL
Will
2022-03-05
目录

MySQL 触发器

# 介绍

触发器是与表有关的数据库对象,指在 insert、update、delete 操作之前或之后触发并执行特定 SQL 语句集合。触发器可以协助开发人员在与数据库交互过程中确保数据的完整性、日志记录和数据校验等。

现在触发器还只支持行级触发,不支持语句级触发。使用别名 OLD 和 NEW 来引用触发器中发生变化的记录内容。

触发器类型:

  • insert 型触发器:NEW 表示将要或者已经新增的数据
  • update 型触发器:OLD 表示修改之前的数据, NEW 表示将要或已经修改后的数据
  • delete 型触发器:OLD 表示将要或者已经删除的数据

# 语法

# 创建

CREATE TRIGGER TRIGGER_NAME
BEFORE/AFTER INSERT/UPDATE/DELETE
ON tbl_name FOR EACH ROW -- 行级触发器
BEGIN
    trigger_stmt ;
END;

1
2
3
4
5
6
7

如:

-- 通过触发器记录 tb_user 表的数据插入日志,将变更日志插入到日志表user_logs中
create trigger tb_user_insert_trigger
after insert
on tb_user for each row
begin
    insert into user_logs(id, operation, operate_time, operate_id, operate_params)
    values
    (null, 'insert', now(), new.id, concat('插入的数据内容为:id=',new.id,',name=',new.name, ', phone=', NEW.phone, ', email='NEW.email, ',profession=', NEW.profession));
end;
1
2
3
4
5
6
7
8
9

# 查看

SHOW TRIGGERS;
1

如:

show triggers;
1

# 删除

DROP TRIGGER [schema_name.]trigger_name; -- 如果没有指定 schema_name,默认为当前数据库 。
1

如:

drop trigger tb_user_insert_trigger;
1
上次更新: 2023/11/01, 03:11:44

← MySQL 存储过程 MySQL 事务→

Theme by Vdoing | Copyright © 2022-2023 Will 蜀ICP备2022002285号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式