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
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
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