什么是触发器?
触发器是数据库中的一种程序,它会监听表的特定行为。一旦表的这个行为发生,触发器会自动执行预先编写的SQL语句。触发器的主要作用是在数据操作前或后执行相应的操作,确保数据的完整性和一致性。
作用
- 自动化操作:触发器可以自动执行SQL语句,无需手动干预。
- 维护数据一致性:通过触发器,我们可以在数据操作时同步更新其他相关表的数据。
- 实现业务逻辑:触发器可以根据业务需求执行特定的操作,如记录日志、更新统计数据等。
如何创建?
在MySQL中,我们使用CREATE TRIGGER
语句来创建触发器。触发器的基本语法如下:
CREATE TRIGGER trigger_name
BEFORE | AFTER trigger_EVENT
ON TABLE_NAME
FOR EACH ROW
trigger_STMT;
trigger_name
:要创建的触发器名称。BEFORE
和AFTER
:指定触发器执行的时间,前者在触发事件之前执行,后者在触发事件之后执行。trigger_EVENT
:触发事件,可以是DELETE、INSERT或UPDATE语句。TABLE_NAME
:触发事件的操作表名。FOR EACH ROW
:表示任何一条记录上的操作都会触发该触发器。trigger_STMT
:激活触发器后要执行的SQL语句。
触发方式
触发器的触发方式是由数据库系统自动处理的,无需手动触发。当数据库执行与触发事件相关的操作时,触发器会被激活执行相应的操作。
示例
假设我们有一个学生表student
和一个班级表class
,我们希望在学生表插入数据时,自动更新班级表的人数。我们可以创建如下触发器:
-- 创建一个insert事件触发器
CREATE TRIGGER tri_insert_student
AFTER INSERT ON student
FOR EACH ROW
UPDATE class SET count = count + 1 WHERE class.id = NEW.class_id;
这样,每次向学生表插入数据时,班级表的人数也会同步更新。