数据库 触发器

触发器(Trigger)

导读:
介绍触发器的相关概念和使用

背景

实际开发中免不了日志功能,这个功能虽然简单,但是总是容易忘记,比如,添加,更改,删除了某个记录,都需要在日志表中加入到一条记录。

这就需要使用事务来包裹起来,形成一个原子操作。但是如果像日志一样,大规模的超频繁的操作,这样似乎不是一个好办法。

定义

官方:触发器时数据库的回调函数,他会在指定的数据库事件发生时自动执行(调用)。

与存储过程一样,触发器也是嵌入到数据库中的一段程序,他的执行不是由程序调用,也不是手动开启,而是由事件来触发。当对某个表进行操作时会自动激活并执行触发器。

优点

  • 确保了数据的完整性
  • 记录操作日志
  • 操作数据前,检查数据的合法性。

缺点

  • 可读性差,维护性差:

  • 数据库表结构变更,导致触发器出错

    这些都会由于触 发器本身的隐蔽性,影响到应用中错误原因排查的效率,不了解这个系统的人就很难维护。

SQL

创建

1
2
3
4
5
6
CREATE  TRIGGER trigger_name [BEFORE|AFTER] event_name 
ON table_name
FOR EACH ROW
BEGIN
-- 触发器逻辑....
END;
  • event_name 事件名称 即 insert,update, delete。
  • FOR EACH ROW:可选项,表示每一行数据的操作都会触发该触发器。如果不指定,则触发器在每个语句级别上触发。
1
2
3
4
5
6
CREATE TRIGGER insert_log
AFTER INSERT ON your_table
FOR EACH ROW
BEGIN
INSERT INTO logs (message, timestamp) VALUES ('New record inserted', NOW());
END;

查询触发器

查询表里的触发器

1
2
sqlite> SELECT name FROM table_name
WHERE type = 'trigger';

下面是整个库的概念与show database show table

1
SHOW TRIGGERS;

删除触发器

1
DROP TRIGGER trigger_name;

参考

数据库-触发器_数据库触发器-CSDN博客


数据库 触发器
http://zanderchan666.github.io/2023/10/28/触发器/
作者
Zander
发布于
2023年10月28日
许可协议