资讯专栏INFORMATION COLUMN

Mysql高级之触发器(trigger)

fsmStudy / 2152人阅读

触发器是一类特殊的事务 ,可以监视某种数据操作(insert/update/delete),并触发相关操作(insert/update/delete)。

看以下事件:

完成下单与减少库存的逻辑

Insert into o (gid,num) values (2,3); // 插入语句

Update g set goods_num = goods_num - 3 where id = 2;// 更新过程

这两个逻辑可以看成一个整体,或者说, insert ---> 引来 update

用触发器可以解决上述问题.

我们可以监视某表的变化,当发生某种变化时,触发某个操作.

创建触发器的语法

Create trigger triggerName

After/before insert/update/delete on 表名

For each row #这句话是固定的

Begin

Sql语句; # 一句或多句,insert/update/delete范围内

End;

删除触发器的语法:

Drop trigger 触发器名

查看触发器

Show triggers

如何在触发器引用行的值

对于insert而言, 新增的行 用new 来表示,

行中的每一列的值 ,用new.列名来表示.

对于 delete来说, 原本有一行,后来被删除,

想引用被删除的这一行,用old,来表示, old.列名,就可以引用被删行中的值.

对于update来说,

被修改的行,

修改前的数据 ,用 old来表示, old.列名引用被修改之前行中的值

修改后的数据,用new 来表示, new.列名引用被修改之后行中的值

触发器里after 和before的区别

After 是先完成数据的增,删,改再触发,

触发的语句晚于监视的增,删,改,无法影响前面的增删改动作.

Before是先完成触发,再增删改,

触发的语句先于监视的增,删,改发生,我们有机会判断,修改即将发生的操作.

典型案例:

对于所下订单,进行判断,如果订单的数量 > 5 ,就认为是恶意订单,

强制把所订的商品数量改成5

查看哪些触发器:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/47108.html

相关文章

  • Mysql高级发器trigger

    触发器是一类特殊的事务 ,可以监视某种数据操作(insert/update/delete),并触发相关操作(insert/update/delete)。showImg(https://segmentfault.com/img/bVMdgu?w=566&h=228); 看以下事件: showImg(https://segmentfault.com/img/bVMdgI?w=604&h=248); 完...

    aaron 评论0 收藏0
  • MySQL数据库DDL发器应用

    摘要:至此,触发器相关内容介绍完毕,下一个章节介绍存储过程和函数,欢迎转发,讨论,共同学习 上篇文章简单介绍了一下MySQL的基本操作之DDL、DML、DQL、DCL,在DDL中简单提了一下触发器,存储过程和函数,本篇文章将详细介绍触发器! 1、触发器作用:简单来说,触发器就是绑定在某个表上的一个特定数据库对象,当在这个表上发生某种触发器所监听的操作时,将会触发某种动作。 2、触发器用法: ...

    syoya 评论0 收藏0
  • Mysql高级特性

    摘要:触发器可以在这些语句之前或之后运行。触发器不会返回结果,可以读取或修改数据。可以使用触发器代替客户端代码强制约束或保证商业逻辑。 mysql查询缓存 服务器根据缓存对相同的查询跳过解析和优化阶段,另一种缓存机制查询缓存,这种缓存保存了select 语句的完整结果集 ,查询缓存保留使用过的表,如果表发生了改变,那么缓存失效了,这种方式开销比较小,查询不会改变语义 mysql检查缓存...

    王伟廷 评论0 收藏0
  • pt-online-schema-change使用说明、限制与比较

    摘要:个别情况是,当操作就是在列上建立主键时,触发器将基于列。创建和修改新表,但不会创建触发器复制数据和替换原表。错误处理存在表上存在触发器,不适用。参考如何使用之说明和原文链接地址 如果正在看这篇文章,相信你已经知道自己的需求了。 在 mysql 5.5 版本以前,修改表结构如添加索引、修改列,需要锁表,期间不能写入,对于大表这简直是灾难。从5.5特别是5.6里,情况有了好转,支持Onli...

    evin2016 评论0 收藏0
  • MySQL基本操作-DDL,DML,DQL,DCL

    摘要:基本操作之数据定义语言,数据操纵语言,数据查询语言,数据控制语言一数据定义语言作用数据定义语言主要用来定义数据库中的各类对象,包括用户库表视图索引触发器事件存储过程和函数等。 MySQL基本操作之DDL(数据定义语言),DML(数据操纵语言),DQL(数据查询语言),DCL(数据控制语言) 一、DDL--数据定义语言作用:数据定义语言主要用来定义数据库中的各类对象,包括用户、库、表、视...

    frank_fun 评论0 收藏0

发表评论

0条评论

fsmStudy

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<