记一次线上问题 → 对 MySQL 的 ON UPDATE CURRENT_TIMESTAMP 的片面认知

news2024/11/27 16:48:06

问题背景

需求背景

需求:对商品的上架与下架进行管控,下架的商品不能进行销售

上架与下架的管控,在我负责的项目(单据系统)中实现;销售的控制则是在另外一个项目(POS系统)中实现的

POS 系统定时地从单据系统中拉取数据,并对商品的销售进行控制

单据系统设计了两张表:

实际上,表的字段不止这么多,但因为表的字段的多少不影响问题的出现,所以也就简化了表结构

下游系统根据 modify_time 定时进行数据的增量同步( t_ware_on_off_bill 和 t_ware_on_off_bill_detail 都会进行更新)

部分数据未同步

结果出现了部分数据未同步的情况

先来复现下问题,初始数据如下

编辑切换为居中

添加描述

此时的 modify_time 的值是 2021-09-08 21:18:52.602

我们来执行下更新操作

编辑切换为居中

可以看到对 t_ware_on_off_bill 的更新结果是: 受影响的行: 0 , modify_time 并未进行更新,其值仍是 2021-09-08 21:18:52.602

但是 t_ware_on_off_bill_detail 是实实在在存在更新的

这就导致下游系统通过 modify_time 没有增量同步最新的商品明细

问题来了:明明对 t_ware_on_off_bill 的 N 个字段进行了 SET 操作,为什么没有记录受影响(modify_time 为什么不更新)

探究真相

我相信此时很多小伙伴都认为楼主是这个

编辑切换为居中

添加描述

菜不可怕,怕的是我们不敢面对它;有问题,我们就去找原因,然后解决它(菜的好理直气壮...)

追查原因

其实 MySQL 官方文档中有说明:11.2.6 Automatic Initialization and Updating for TIMESTAMP and DATETIME

编辑切换为居中

添加描述

两种情况会进行自动更新成系统当前时间

1、insert 行时,该列没有值

2、该行的任意列的值改变了

此时,相信大家都知道原因了吧

编辑切换为居中

添加描述

虽然这个 SQL 很长,SET 了好几个字段,但是不满足上述两点中的任意一点,那么 modify_time 也就不会更新成系统当前时间了

解决问题

原因是找到了,如何解决问题了?

官方文档里面也说明了,显示的设值,也就是我们显示的指定 modify_time 的值,像这样

编辑切换为居中

添加描述

我们来看看实际结果

当然,解决方案不止这一种,各位可以在评论区畅所欲言

总结

1、MySQL 自动设置成系统当前时间是有条件的,否则是不会更新的哦

insert 行时,该列没有值

该行的任意列的值改变了

2、给大家留个疑问:为什么要有任意列的值改变了,MySQL 才会自动更新 modify_time 成当前系统时间,而不是只要有 SET 就更新 modify_time 成当前系统时间

                                           资源获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻微信公众号获取联系方式👇🏻👇🏻👇🏻

 精彩专栏推荐订阅:下方专栏👇🏻👇🏻👇🏻👇🏻

每天学四小时:Java+Spring+JVM+分布式高并发,架构师指日可待

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/88512.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能课后作业_python实现广度优先遍历搜索(BFS)(附源码)

2 广度优先遍历搜索(BFS) 2.1算法介绍2.2实验代码2.3实验结果2.4实验总结 2.1算法介绍 广度优先搜索算法(英语:Breadth-First-Search,缩写为BFS),是一种图形搜索算法。简单的说,BFS是从根节点开始&#…

MATLAB动态导入文件功能(txt文件读入)

目录 一、界面搭建 1.axes坐标轴 2.LIST表 3.button按钮 二、属性 三、代码实现 一、界面搭建 1.axes坐标轴 需要有一个可以显示点的axes,以及一个展示点坐标XYZ的LIST表控件 2.LIST表 LIST需要添加表头,XYZ,行1,2,3,4,.. 右键列表…

降本增效: 蚂蚁在 Sidecarless 的探索和实践

文|王发康 (花名:毅松 ) 蚂蚁集团技术专家、MOSN 项目核心开发者 深耕于高性能网络服务器研发,目前专注于云原生 ServiceMesh、Nginx、MOSN、Envoy、Istio 等相关领域。 本文 5574 字 阅读 14 分钟 前言 从单体到分…

三、数据链路层(二)封装成帧和透明传输

目录 2.1字符计数法 2.2字符填充的首尾定界符法 2.3零比特填充的首尾标志法 2.4违规编码法 组帧就是一段数据的前后分别添加首部和尾部,确定帧的界限。 组帧的目的是解决帧定界、帧同步(接收方应能从接收到的二进制比特流中区分出帧的起始和终止&am…

java计算机毕业设计ssm智能交通信息管理平台6w258(附源码、数据库)

java计算机毕业设计ssm智能交通信息管理平台6w258(附源码、数据库) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#…

气象数据相关分析及使用系列:基于CALMET诊断模型的高时空分辨率精细化风场模拟

【查看原文】气象数据相关分析及使用系列:基于CALMET诊断模型的高时空分辨率精细化风场模拟技术应用​​​​​​ 在研究流场时,常用观测、模型风洞测试和数值模拟方法进行研究。但时常遇到研究区气象站点分布稀疏,不能代表周边复杂地形的风场…

PHP session相关知识详解

今天继续给大家介绍渗透测试相关知识,本文主要内容是PHP session相关知识详解。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未…

JavaScript 版文章自动创建目录导航菜单控件源代码,用来生成文章导航,可生成独立的侧边栏导航菜单

特点 支持 UMD 规范;拥有 AnchorJS 基础功能;支持中文和英文标题文字生成ID;支持生成独立的侧边栏导航菜单;支持直接在文章中生成文章导读导航;自动分析标题关系,生成段落层级索引值;可以作为 …

试着开发一个Pagination组件

1 组件需求和模块设计 我们要实现的分页组件大致效果如下: 组件需求 点击左右分页按钮可以跳转到上一页/下一页;点击中间的页码按钮可以跳转到相应的页码;首页尾页需要始终显示出来(如果只有1页则不显示尾页)&#x…

数字孪生助力油气管道行业实现资产管理

随着数字孪生技术的发展日臻成熟,各个行业领域都在经历一场翻天覆地的变化。结合国内的油气管网系统建设现状,数字孪生技术对油气管道行业数智化建设必将有重大而深远的意义。 数字孪生助力油气管道行业实现资产管理 北京智汇云舟科技有限公司成立于201…

【发表案例】2/3区计算机视觉类SCI,3个月19天录用

2/3区计算机视觉类SCI 【期刊简介】IF:2.5-3.0,JCR2/3区,中科院4区 【检索情况】SCI 在检,正刊 【征稿领域】面向智能交通应用的物联网驱动计算机视觉技术 录用案例:3个月19天录用 2022.12.05 | Accepted 2022.11.17 | Edit…

全新的 React 组件设计理念 Headless UI

其实,最早接触 Headless UI 是在去年,碰巧看到了一个非常前沿且优秀的组件库 ---- Chakra UI,这个组件库本身就是 Headless UI 的实践者,同时也是 CSS-IN-JS 的集大成者。 我当时看过之后,就对该理念产生了很大的兴趣…

(2022最新)Xray、Rad两款工具的使用与联动

1、Xray的简介 xray 是一款功能强大的安全评估工具,由多名经验丰富的一线安全从业者呕心打造而成,主要特性有: 1、检测速度快。发包速度快; 漏洞检测算法效率高。 2、支持范围广。大至 OWASP Top 10 通用漏洞检测,小至各种 CMS 框架 POC&am…

ClickHouse Senior Course Ⅵ

序言 这里单独说明下分布式表引擎,不用分布式表引擎,感觉ClickHouse就没必要使用了cuiyaonan2000163.com 参考网址: 分布式引擎 | ClickHouse Docs 分布式表引擎的位置: 分布式引擎 分布式引擎本身不存储数据, 但可以在多个服务器上进行分布式查询。 读是自动并行的。读取…

内核动力之源——内存管理

目录 内存管理背后的故事 内存管理概述 常见内存分配策略 LwIP的宏配置及内存管理 见招拆招——动态内存堆 数据结构描述 函数实现 ​以不变应万变——动态内存池 数据结构描述 函数实现 使用C库管理内存策略 无论在哪种系统中,动态内存都是一个非常重要的…

12.5、后渗透测试--内网主机屏幕截图

攻击主机: Kali 192.168.11.106靶机:windows server 2008 r2 192.168.11.134前提:获得 meterpreter shell操作屏幕的几种方式:screenshotscreenshare加载espia模块,使用screengrab一、screenshot # 截图 meterprete…

数据分析案例-往届世界杯数据可视化

目录 1.引言 2.项目简介 2.1数据集介绍 2.2技术工具 3.数据可视化 3.1往届世界杯获奖国家TOP5 3.2往届世界杯比赛数据情况 3.3往届世界杯观众人数情况 3.4往届世界杯主办方情况 3.5往届世界杯冠军队情况 1.引言 足球是世界上非常受欢迎的运动之一,在全球…

数据可视化的最佳实践【不容错过】

在当前的市场中,数据可视化已经成为了传播数据信息的标准和载体。从商业智能BI到新闻媒体行业,处处都存在着数据可视化的影子,它帮助了我们更好的理解数据和交流数据中传达出的信息。研究表明,大脑对于可视化呈现出来的信息更加容…

Spring Cloud Alibaba基础教程:nacos安装

我们在学习springCloud的时候用的注册中心是Eureka: springBoot集成springCloud(一)注册中心 但是由于houlai Eureka2.0后续不维护,国内就需要一个可靠的注册中心。所以现在大部分都是用nacos。下面我们来说下如何安装nacos 一&#xff1a…

PMP证书含金量高在哪里?

关于 PMP 含金量的问题,争议一直挺大的,报考费这么贵、通过率这么高,身边都有这个证了,考了没有用上就没有含金量了。相信很大一部分人都是这么想的,但是每年依然有上万考生参加考试,这是为啥呢&#xff1f…