MySQL中的触发器

触发器是MySQL中用于监视某个表的insert、update、delete操作,实现自动维护的功能。

主要功能:实现检查约束,维护冗余数据,模拟外键级联选项。



1.用MySQL语句实现触发器

(1)创建触发器:

CREATE TRIGGER 触发器名 触发时间 触发事件 ON 表名 FOR EACH ROW
BEGIN
触发程序​
END;

注:由于触发程序中一般会有以;结尾的语句,而在MySQL窗口中;是命令结束标记,直接将上述语句输入,会导致语句被拆开报错。所以,应在创建之前用DELIMITER重设结束标记,创建完毕后恢复为;。比如,上述代码完整版应该是:

DELEMITER $$
CREATE TRIGGER 触发器名 触发时间 触发事件 ON 表名 FOR EACH ROW
BEGIN
触发程序​
END;
$$
DELIMITER ;

(2)查看触发器的定义:和数据库、表的操作类似,用SHOW TRIGGERS;SHOW CREATE TRIGGER 触发器名;查看触发器定义。

(3)删除触发器:DROP TRIGGER 触发器名;

2.用Navicat建立触发器

表>设计表>触发器,填写触发器名,选择触发时间、触发事件,在下方的“定义”栏里,填上触发程序即可。


3.说明:

(1)触发时间:BEFOREAFTER。表示在触发事件发生之前/之后执行触发程序。

(2)触发事件:INSERTUPDATEDELETE。表示在插入新纪录/更改某行记录/删除某行记录时触发。

(3)FOR EACH ROW:触发事件影响的每条记录都会执行一次触发程序。

(4)触发程序:指定触发事件激活后要执行的代码。代码如何去写,后面可能会写一篇《MySQL编程基础》。

这里涉及到OLDNEW关键字:

①insert新记录时,用NEW表示新纪录,用NEW.字段名访问字段值。

②delete旧记录时,用OLD表示旧纪录,用OLD.字段名访问字段值。

③update记录时,用OLD表示修改前的旧记录,用NEW表示修改后的新纪录。访问字段值同上。

④OLD记录是只读的,NEW记录可读写。

⑤在BEFORE的触发程序中,可用SET NEW.字段名=字段值;来修改NEW记录的值;但在AFTER的触发程序中,不可修改。也就是说,记录只能在被触发器外的动作操作之前,被触发程序进行写入操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值