• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > Mysql高级之触发器

Mysql高级之触发器

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了Mysql等相关知识,希望本文的分享对您有所帮助
触发器是一类特殊的事务 ,可以监视某种数据操作(insert/update/delete),并触发相关操作(insert/update/delete)。

22.png

看以下事件:

22.png

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

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

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

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

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

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

22.png

创建触发器的语法

Create trigger triggerName

After/before insert/update/delete on 表名

For each row #这句话是固定的

Begin

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

End;

删除触发器的语法:

Drop trigger 触发器名

查看触发器

Show triggers

22.png

如何在触发器引用行的值

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

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

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

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

对于update来说,

被修改的行,

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

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

22.png

22.png

触发器里after 和before的区别

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

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

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

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

典型案例:

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

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

22.png

查看哪些触发器:

22.png

22.png

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2018-12-05如何使用游标?MySQL游标简介
  • 2018-12-05MYSQL自检时提示:[Microsoft][ODBC 驱动程序管理器] 未发现数据
  • 2018-12-05 MySQL InnoDB索引介绍及优化
  • 2018-12-05浅谈MySQL漂流记(六)
  • 2018-12-05mysql 有关“InnoDB Error ib_logfile0 of different size”错误
  • 2017-05-11如何用cmd连接Mysql数据库
  • 2017-05-11用批处理实现自动备份和清理mysql数据库的代码
  • 2018-12-05从以下几个方面来处理,MySQL主从复制不一致的问题
  • 2018-12-05SQL Server 7.0 入门(二)
  • 2018-12-05使用MySQL数据库(2)创建一个数据库

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • mysql-数据库读取出来的数据如何组装多层嵌套的json
    • MySQL基准测试套件Benchmark安装DBI组件过程分享
    • ef框架-vs2015连接数据库,实体数据模型向导在选择完后点击下一步就闪退
    • Centos中安装多个mysql数据的配置实例
    • MySQL——修改root密码的4种方法(以windows为例)
    • 配置 SQL Server 2005 以允许远程连接的方法
    • 解析MySQL中INSERT INTO SELECT的使用
    • win2003服务器下配置 MySQL 群集(Cluster)的方法
    • SQL Server存储过程的基础说明
    • mysql如何在删除外键之前判断外键是否存在

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有