当前位置: 首页 > news >正文

mysql之timestamp字段自动更新问题

mysql之timestamp字段自动更新

问题:mysql有一个字段是timestamp类型,发现set更新其他字段,这个timestamp也会自动更新。

问题分析:
这是mysql timestamp字段特性:
MySQL中有这样的一个默认行为:一行数据中的某些列被更新了,如果这一行中有timestamp类型的列,那么这个timestamp列会自动更新时间戳。这个行为是由explicit_defaults_for_timestamp参数控制的。在实际使用过程中经常会遇到一些非预期的异常情况,这给数据库使用过程带来诸多不便。

timestamp 列不可以用程序设置值,在插入记录时不需要指定 timestamp 字段的名称和 timestamp 字段的值,你只需要在设计表的时候添加一个 timestamp 字段即可,插入后该字段的值会自动变为当前系统时间。

以后任何时间修改表中的记录时,对应记录的 timestamp 值会自动被更新为当前的系统时间。

结论: timestamp 类型适合用来记录数据的最后修改时间,因为只要你更改了记录中其他字段的值,timestamp字段的值都会被自动更新。

解决方法:
你可以修改为datetime类型,datetime类型字段你不专门配置,默认不会自动更新。
datetime 类型适合用来记录数据原始的创建时间,因为无论你怎么更改记录中其他字段的值,datetime 字段的值都不会改变,除非你手动更改它。

最佳实践:每个表都应该有一列使用 timestamp 用于自动记录更新时间,这一列不需要在 Java 类中出现,如果需要记录创建时间,则使用 datetime。

MySQL TIMESTAMP简介

MySQL TIMESTAMP是一种时态数据类型,它包含日期和时间的组合。 TIMESTAMP字段YYYY-MM-DD HH:MM:SS的格式 其被固定在19个字符。 TIMESTAMP值的范围 ‘1970-01-01 00:00:01’ UTC为’2038-01-19 03:14:07’ UTC。 当你插入一个TIMESTAMP值到一个表时,MySQL从您连接的时区为UTC存储将其转换。

当你查询一个TIMESTAMP值时,MySQL的UTC值转换回到你的连接的时区。请注意,此转换不会发生在其他时态数据类型中,例如DATETIME。

默认情况下,连接时区是MySQL数据库服务器的时区。连接到MySQL数据库服务器时,可以使用不同的时区。 当您检索TIMESTAMP客户端在不同时区插入的值时,您将获得一个与存储在数据库中的值不同的值。只要您不更改时区,就可以获得与TIMESTAMP存储时相同的值。

相关文章:

  • 网站和新媒体建设审批制度在百度上怎么注册网站
  • 珠海网站建设科速互联客服外包
  • 沧州做家装的公司网站专业做网站官网
  • 流量网站制作seo网站自动推广
  • 郑州彩票网站开发知乎怎么申请关键词推广
  • 有那些做任务的网站常州seo收费
  • ​​深入解析 Vue 中的 pathRewrite:路径重写规则详解​​
  • 汽车一键启动升级手机控车
  • 技术选型:时序数据库(三)
  • vue 实现多区域图片拖拽
  • Neo4j2.0.1桌面端使用教程(简化版)
  • 关于如何在 Git 中切换到之前创建的分支的方法
  • Redis主从架构哨兵模式
  • 生僻字处理工具类
  • 【附源码】旅游网站系统设计与实现+SpringBoot + Vue (前后端分离)
  • ArrayList和LinkedList详解
  • python打卡day56@浙大疏锦行
  • 时间同步 gptp ptp
  • 【软件系统架构】系列四:嵌入式软件-NPU(神经网络处理器)系统及模板
  • 如何解决本地DNS解析失败问题?以连接AWS ElastiCache Redis为例
  • LabVIEW气密性测试系统
  • 川翔云电脑全新上线:三维行业高效云端算力新选择
  • Solidity 从 0 到 1 |Web3 开发入门免费共学营
  • Launcher3 中的 MVC 架构类解析
  • 基于HAR包转换为pytest用例的测试技术实战
  • 鸿蒙 FoldSplitContainer 解析:折叠屏布局适配与状态管理