关于Mysql触发器
关于:
after触发器—是在记录操纵之后触发,是先完成数据的增删改,再触发,触发的语句晚于监视的增删改操作,无法影响前面的增删改动作
before触发器—是在记录操纵之前触发,是先完成触发,再增删改,触发的语句先于监视的增删改,我们就有机会判断,修改即将发生的操作,
如:我们在触发之前需要判断new值和old值的大小或关系,如果满足要求就触发,不通过就修改再触发。
如:表之间定义的有外键,在删除主键时,必须要先删除外键表,这时就有先后之分,这里before相当于设置了断点,我们可以处理删除外键。
BEFORE 用于数据验证和净化;
AFTER 用于审计跟踪,将修改记录到另外一张表中。
- 对于INSERT语句, 只有NEW是合法的;
- 对于DELETE语句,只有OLD才合法;
- 对于UPDATE语句,NEW、OLD可以同时使用。
语法:
CREATE TRIGGER mytrigger AFTER INSERT ON mytable FOR EACH ROW SELECT NEW.col into @result; SELECT @result; -- 获取结果
在插入mytable表格后 查询获取结果
navicat中的创建
针对单个字段的变更跟新其时间字段:
if (new.更改目标 <> old.更改目标) then set new.状态时间= now(); end if