mysql 触发器

mysql 触发器

前言

这里呢,有两张表,分别是 CXY_TS_ORDER_TICKET CXY_TS_ORDER_TICKET_STATUS 表,在 CXY_TS_ORDER_TICKET 表里面有一个 get_status 字段,现在呢,我们想在该字段发生变化时,在 CXY_TS_ORDER_TICKET_STATUS` 表中,将该字段插入,并且记录变化时间以及发生变化的记录的主键。因此呢,我打算用触发器去实现这个需求

实现

-- Created by util.you.com@gmail.com
delimiter $$
CREATE TRIGGER `order_ticket_status_trigger` AFTER UPDATE 
ON `CXY_TS_ORDER_TICKET` FOR EACH ROW 
BEGIN 
    DECLARE s1 INT(11); -- 声明变量,用于存入 CXY_TS_ORDER_TICKET 表的 get_status 字段值,id 字段值
    DECLARE s2 INT(11); 
    set s2 = new.id; -- 分别给 s1 和 s2 赋值
    set s1 = new.get_status;
    IF((old.get_status != new.get_status) OR (old.get_status IS NULL && new.get_status IS NOT NULL)) THEN
        INSERT INTO `CXY_TS_ORDER_TICKET_STATUS`(`order_ticket_id`, `STATUS`, `insert_date_time`) VALUES(s2, s1, DATE_FORMAT(now(),'%Y-%m-%d %H:%i:%s'));
    END IF; 
END$$

解释

在 mysql 中,newold都是内置的,分别表示一个字段发生变化前、后的值(当然也包括插入操作前后的变化),此处呢,因为我们需要根据 CXY_TS_ORDER_TICKET表的 get_status字段来插入记录到 CXY_TS_ORDER_TICKET_STATUS 表,因此呢,new 和 old 都取该字段即可。

mysql 中的触发器呢,大致分为三类:insert 型、update 型、delete 型。

何时触发该操作呢,又分为 afterbefore

上示例子,就是一个触发器的大致模板,根据哪一张表的变化来触发该触发器,就 on 这张表即可了。

声明

原创手敲不易,转载请注明出处,谢谢。我是拉丁小毛,欢迎大家关注我哦,一起交流,共同进步。有问题可以邮我哦(util.you.com@gmail.com)

code
主要交流Java语言编程知识点,在此推荐我的个人博客,欢迎大家访问: [链接] 、[链接]、[链接]
41 声望
3 粉丝
0 条评论
推荐阅读
shiro笔记
是一款主流的Java安全框架,不依赖任何容器,可以运行在JavaSE和JavaEE项目中,它的主要作用是对访问系统的用户进行身份认证、授权、会话管理、加密等操作。

hello_segment阅读 986

一次偶然机会发现的MySQL“负优化”
今天要讲的这件事和上述的两个sql有关,是数年前遇到的一个关于MySQL查询性能的问题。主要是最近刷到了一些关于MySQL查询性能的文章,大部分文章中讲到的都只是一些常见的索引失效场合,于是我回想起了当初被那个...

骑牛上青山7阅读 1.6k评论 2

分布式高可用Mysql数据库Percona XtraDB Cluster 8.0 与 Proxysql 史上最详尽用法指南
PXC是Percona XtraDB Cluster的缩写,是 Percona 公司出品的免费MySQL集群产品。PXC的作用是通过mysql自带的Galera集群技术,将不同的mysql实例连接起来,实现多主集群。在PXC集群中每个mysql节点都是可读可写的...

apollo0084阅读 7.2k评论 2

MongoDB 插入时间与更新时间(create_time/update_time)
MongoDB 在数据库层面不能像 MySQL 一样设置自动创建 create_time/update_time,自动更新 update_time

qbit阅读 13.9k评论 2

Mysql索引覆盖
通常情况下,我们创建索引的时候只关注where条件,不过这只是索引优化的一个方向。优秀的索引设计应该纵观整个查询,而不仅仅是where条件部分,还应该关注查询所包含的列。索引确实是一种高效的查找数据方式,但...

京东云开发者2阅读 703

封面图
SegmentFault 思否技术周刊 Vol.70 — 深入 MySQL 实战
MySQL 软件采用了 GPL( GNU 通用公共许可证),由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库。

Beverly2阅读 1.5k

封面图
MySQL 数据库索引技术原理初探
一本书 500 页的书,如果没有目录,直接去找某个知识点,可能需要找一会儿,但是借助前面的目录,就可以快速找到对应知识点在书的哪一页。这里的目录就是索引。

mylxsw1阅读 1.2k

41 声望
3 粉丝
宣传栏