MySQL触发器是一种特殊的存储过程,它与表相关联,在满足定义的条件时自动触发并执行特定的操作。触发器经常用于加强数据的完整性约束和业务规则等。
创建触发器的语法如下:
CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW trigger_body
其中:
trigger_name
: 触发器的名称,确保在单个数据库中唯一。trigger_time
: 触发器的时间,指定触发器何时执行,可以是BEFORE
或AFTER
。trigger_event
: 触发器的事件,指定触发器在何种事件后触发,例如INSERT
、DELETE
或UPDATE
。table_name
: 与触发器关联的表名。trigger_body
: 触发器的主体,包含要执行的SQL语句和逻辑。
如下图所示,如果我想在表中插入数据时自动给password加密,则可以这样:
可以看到pssword字段已经自动加密。
触发器执行时,可以使用NEW
关键字引用正在插入或更新的新行,而使用OLD
关键字引用正在删除或更新的旧行。这使得您可以在触发器中执行针对新旧行的特定操作。
如果是要在触发器中执行多条sql,语法如下:
CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name
FOR EACH ROW
begin
trigger_body
end;
需要注意的是,创建触发器时需要指定触发器的操作对象——数据表,且该数据表不能是临时表或视图。此外,触发器的使用会影响数据库的结构,同时增加了维护的复杂程度。因此,在创建和使用触发器时需要谨慎考虑其影响。