MYSQL Trigger触发器的使用

什么是触发器

  1. 可以理解MySQL触发器(Trigger)是一种特殊的SQL语句,或者是存储过程。
  2. 作用与表上,当表记录的增删改事件(insert,update,delete)发生时,触发器会被激活,执行定义的SQL脚本。
  3. 使用触发器可以实现数据补全,数据验证,数据复制,日志插入等功能。

语法

create trigger 触发器名称
{before | after } {insert | update | delete}  -- 触发器类型和事件
on 表名称
for each row  -- 触发器的作用范围
begin
    -- 触发器执行的操作
end;
  • before / after : 表示触发器的类型,分别表示发生前/发生后执行
  • insert / update / delete : 表示触发器的事件类型,分别表示插入 / 更新 / 删除操作
  • on 表名称 : 为需要监听的表明
  • for each row : 表示触发器作用的范围,即每一行记录都会触发该触发器
  • 执行操作中可以是一条简单的sql,也可以是存储过程。根据需要来安排。

在Begin和End之间可以获取到的数据

在执行语句on_tri中,如果要引用更新记录中的字段,还可以使用old和new关键字。
  • 对于insert语句,只有new是合法的,表示当前已插入的记录;
  • 对于delete语句,只有old才合法,表示当前删除的记录;

查询触发器

show triggers;

删除触发器

drop trigger 触发器名称;

注意点

在使用trigger时,由于mysql语句间默认的分割符是";"但是sql语句中用到了分号,你可能需要自定义分隔符,举个完整的trigger创建的例子


DELIMITER $$

drop trigger IF EXISTS fill_openid_trigger;

CREATE TRIGGER fill_openid_trigger BEFORE UPDATE ON customer FOR EACH ROW
BEGIN
    IF NEW.openid IS NULL OR NEW.openid = '' THEN
        IF JSON_EXTRACT(NEW.extra_info, '$.openId') IS NOT NULL AND JSON_EXTRACT(NEW.extra_info, '$.openId') <> '' THEN
            SET NEW.openid = JSON_UNQUOTE(JSON_EXTRACT(NEW.extra_info, '$.openId'));
        END IF;
    END IF;
END $$
DELIMITER ;

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值