文档章节

mysql的触发器编写(一)

熊猫88
 熊猫88
发布于 2015/12/17 12:20
字数 620
阅读 99
收藏 7


  mysql语句初级入门之后,需要的是对mysql更精深的一步操作。触发器是mysql里相对比较高级的一个操作。处理器最典型的应用是事物:(Innodb会支持事物功能)TP框架里常常会用到事物回滚等概念。触发器可以实现事物的功能,比如某个会员退款成功后,交易成功状态变更,同时会变更统计数据还有用户账户金额等。
  触发器的基本语法:
    create trigger triggerName
    after/before insert/update/delete on 表名
    for each row   #这句话在mysql是固定的
    begin
    sql语句;
    end;   
   在非常多的业务逻辑中,需要
   新设计俩个表
   test1     id  num1  num2  三个字段
   test2     id  num3    score  三个字段


   1.最简单的触发器设计示例
   每当test1表新增一个数据组的时候的时候,test2跟新一个对应的随机数据组  
   CREATE DEFINER=`root`@`127.0.0.1` TRIGGER `test`.`testxiong` AFTER INSERT ON `test`.`test1`
  FOR EACH ROW Insert into test2(`score`,`num3`) values(ROUND(RAND() * 99),ROUND(RAND() * 99));
  对于insert而言,新插入的行用new来表示,行中的每一列的值用new.列名来表示。


 2.现在实现一个功能:
    我们用num3 储存生成一个随机数 score备份num1的值 进行对应的id储存
    对于insert而言,新插入的行用new来表示,行中的每一列的值用new.列名来表示。
    Insert into test2(`id`,`score`,`num3`) values(new.id,new.num1,ROUND(RAND() * 99));


  3.关联触发器删除操作,每天test1表进行数据删除操作的时候,把test2表对应的id进行删除
  CREATE TRIGGER `test`.`deletexiong` AFTER DELETE ON `test`.`test1`
  FOR EACH ROW delete from test2 where test2.id=old.id;
  对于delete而言:原本有一行,后来被删除,想引用被删除的这一行,用old来表示,old.列名可以引用被删除的行的值。


  4.数据表更新触发
  实现目标:当test1表的Id=8的num2进行更新后,test2表Id=8的score会读取test1表更新数据加上自己表里原来的score
  update test2  set  score=new.num1  where Id = old.Id;
 对于update而言:被修改的行,修改前的数据,用old来表示,old.列名引用被修改之前行中的值;
修改的后的数据,用new来表示,new.列名引用被修改之后行中的值。

© 著作权归作者所有

熊猫88
粉丝 18
博文 76
码字总数 65366
作品 0
程序员
私信 提问
Linux的企业-Redis 作 mysql 的缓存服务器

一.配置环境 redhat6.5 server1:lump php模块 172.25.50.1 server2:redis 172.25.50.2 server3:mysql 172.25.50.3 二.安装 lnmp 环境 1.安装php 2.配置nginx 3.配置nginx php默认发布文件......

一百个小排
2017/10/23
0
0
redis作为mysql的缓存服务器(读写分离)

一、redis简介 Redis是一个key-value存储系统。和Memcached类似,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且...

mickelfeng
2015/10/15
0
2
mysql触发器创建语法

最近有一个需求需要使用mysql的触发器来实现,于是就开始编写触发器的创建sql语句,在网上找了一下创建触发器的说明,按照样子来编写,竟然说有语法错误,后来在mysql官方的文档资料里面找到...

阿信sxq
2016/08/24
109
0
实现mysql和redis之间的触发数据同步——mysql 触发器+gearman+php.worker

上回一次我们已经实现了 redis 作为 mysql 的缓存服务器,但是如果更新了 mysql,redis 中仍然会有对应的 KEY,数据就不会更新,此时就会出现 mysql 和 redis 数据不一致的情 况。 详情请见 基于...

知微不知更
2017/04/07
0
0
elasticsearch搜索项目重构

这段时间一直在忙着重构公司之前的搜索业务这块,由于公司之前的搜索使用的是基于mysql的方案,因为里面涉及到一些主从搜索,分表搜索,索引整体上比较复杂,重构期间要花很多时间理解业务跟...

砚羲
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

安利一波小程序原生组件库

日常逛 github,发现微信官方仓库下多出一批组件库。 weui 包含 button 、 cell 、 dialog 、 progress 、 toast 、 article 、 actionsheet 、 icon 等常用组件。想想硬编码实现的模态框,可...

dkvirus
21分钟前
1
0
后端管理系统开发(一):登录篇

作为后端程序员,想写一个数据展示的系统,主要用于数据查询、数据展示,当然也有登录功能了,有没有比较快的方式呢,于此,Vue-Admin-Pro便产生了,基于iView-Admin,进行简化,为后端程序员...

冯文议
28分钟前
2
0
Linux应用可通过USB访问Android设备-Chrome OS 75版发布

对于大多数Chromebook设备,Chrome OS 75已升级为稳定版本,版本为75.0.3770.102(平台版本:12105.75.0)。此版本引入了一项新的家长控制功能,可让家长限制孩子在Chrome操作系统设备上花费...

linux-tao
29分钟前
2
0
SetConsoleWindowInfo 函数--设置控制台窗口的大小和位置

https://www.cnblogs.com/X-Jun/p/6910430.html?utm_source=itdadao&utm_medium=referral

极客行
32分钟前
2
0
HanLP-朴素贝叶斯分类预测缺陷

文章整理自 baiziyu 的知乎专栏,感兴趣的朋友可以去关注下这位大神的专栏,很多关于自然语言处理的文章写的很不错。昨天看到他的分享的两篇关于朴素贝叶斯分类预测的文章,整理了一下分享给...

左手的倒影
34分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部