MySQL中触发器的使用

触发器

模板

sql 复制代码
-- BEFORE|AFTER表是在数据库事件发生之前或之后执行
-- INSERT|UPDATE|DELETE表是发生什么数据库事件
-- FOR EACH ROW表示为每一行trigger_body数据都执行该触发器
CREATE TRIGGER trigger_name
BEFORE|AFTER INSERT|UPDATE|DELETE
ON table_name FOR EACH ROW
BEGIN
	trigger_body;
END;

增删改查

sql 复制代码
#在已知数据库内,查询触发器
SHOW TRIGGERS;
SELECT * FROM information_schema.TRIGGERS WHERE TRIGGER_NAME = '触发器名';
#查询所有的触发器
SELECT * FROM information_schema.TRIGGERS(WHERE TRIGGER_SCHEMA = '数据库名');
#删除触发器
DROP TRIGGER IF EXISTS trigger_name;

示例

sql 复制代码
-- 每次新增tab1表的时候都往tab2表中初始化数据
-- tab2表中的tenantId是引用的tab1表中的,只需要用NEW.tenant_id引用即可
CREATE TRIGGER tab2_trigger
AFTER INSERT
ON tab1 FOR EACH ROW
BEGIN
	INSERT INTO tab2 (id, name, tenant_id) VALUES('asset_type', '资产类型',NEW.tenant_id);
	INSERT INTO tab2 (id, name, tenant_id) VALUES('dept_id', '所属部门', NEW.tenant_id);
END;
相关推荐
rrrjqy8 小时前
用 Docker 部署远程 MySQL:从端口踩坑到权限全开(附避坑指南)
mysql·adb·docker
ahauedu9 小时前
MySQL 8.0+ 默认使用 caching_sha2_password 插件进行密码加密
数据库·mysql
_evenif10 小时前
MySql 8 一机多实例部署
linux·数据库·mysql
shaoming377612 小时前
MySQL篇之对MySQL进行参数优化,提高MySQL性能
数据库·mysql
程序员夏末13 小时前
【MySQL | 第一篇】 深入理解三大日志(undo Redo Bin)
数据库·mysql
ruxingli14 小时前
MySQL优化
数据库·mysql
feng68_14 小时前
MySQL集群主从复制
linux·运维·数据库·mysql·adb
Xzq21050914 小时前
Mysql API学习
数据库·学习·mysql
宁小法14 小时前
MySQL - 读写延迟, 并发导致的问题-分析与解决
数据库·mysql·主从延迟·并发请求
流星白龙15 小时前
【MySQL】0.MySQL安装
数据库·mysql