mysql 触发器

单行执行语句触发器语句

CREATE TRIGGER trigger_name trigger_time trigger_event

ON tbl_name FOR EACH ROW trigger_stmt

trigger_name 触发器名称

trigger_time 触发时机 before 或after

trigger_event 标识触发事件 INSERT , UPDATE,DELETE

tbl_name 建立触发器的表名

trigger_stmt 触发器执行语句

多行执行语句触发器语句

CREATE TRIGGER trigger_name trigger_time trigger_event

ON tbl_name FOR EACH ROW 

BEGIN


END


查看触发器 SHOW TRIGGER;

后跟 \G 可以是信息显示更加有条理

mysql中所有触发器的定义都存在INFORMATION_SCHEMA数据库中的TRIGGERS表格中。

删除触发器 DROP TRIGGER trigger_name;

在数据库中,触发器可以在INSERT、UPDATE或DELETE的时候,执行一些特定的操作,以此实现一些业务逻辑,可以大大简化应用程序设计。这一点使用过触发器的都会很有感触,这里主要提一下使用触发器需要注意的几个弊端。

  • MySQL触发器能基于行触发,MySQL触发器始终时基于表中的一条记录触发,而不是一组SQL语句。因此,如果需要变动整个数据集而数据集数据量又较大时,触发器效果会非常低。
  • 每一个表的一个事件只能定义一个触发器。
  • 由于MySQL触发器基于行触发的特性,因此对于批量操作并不适合使用触发器
  • 使用触发器实现的业务逻辑在出现问题时很难进行定位,特别是设计到多个触发器的情况
  • 协同开发时,写业务层代码如果不清楚数据库触发器的细节,容易搞不清到底触发了那些触发器
  • 大量使用触发器会导致代码结构容易被打乱,阅读源码困难

for each row 每行受影响,触发器都执行,叫行级触发器。
oracle 触发器中分行级触发器和语句级触发器,可不写for each row,无论影响多少行都只执行一次。
mysql不支持语句触发器,所以必须写for each row;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值