MySQL 触发器篇

一、概述

Mysql 允许通过触发器、存储过程、函数的形式来存储代码。

触发器可以让你在执行 Insert、Update、Delete的时候,执行一些特定的操作。可以在Mysql中指定是在Sql语句执行之前触发还是执行后触发。

二、使用触发器需要注意的点

对每一个表的每一个事件,最多只能定义一个触发器(换句话说,不能在AFTER INSERT上定义两个触发器)。

Mysql只支持“基于行的触发”,也就是说,触发器始终是针对一条记录的,而不是针对整个SQL语句的。所以,如果变更的数据集非常大,效率将会很低。

三、使用

1、基本说明

create trigger 【触发器名称】【触发器的执行时间点】【执行的动作点】 on 【表名】for each row [函数 或者动作]

说明:

触发器执行时间:before、after

执行的动作点:insert, update, delete

函数:包在 begin、end 之间

动作:update、insert

2、使用

create trigger
    update_product_after
after update on
    product
for each row
begin
    update product set last_update_time = TIMESTAMP
    -- 代码区域
end;

四、说明

  由于目前大多数的 PHP 框架已经内置了事件触发的函数,所以我们项目中已经很少再用到 Mysql 本身的触发器了。并且我们也完全可以在应用程序代码中去控制,没必要在Mysql中去写事件代码了。

  触发器可以掩盖服务器背后的工作,一个简单的Sql语句背后,因为触发器,可能包含了很多看不见的工作。因此触发器的问题也很难排查,如果某个性能问题和触发器相关,将会很难定位和分析。

  触发器可能导致死锁和锁等待。如果触发器失败,那么原来的sql语句也会失败。如果没有意识到这其中是触发器在搞鬼,那么将很难理解服务器抛出的出错误代码是什么意思。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值