MySQL中同时存在创建和上次更新时间戳字段解决方法浅析

YOLOv11 损失函数进阶:Varifocal Loss 让正负样本精度双升 创建self.alpha = alpha # 正样本权重系数self.gamma = gamma # 聚焦系数self.lambda_reg = lambda_reg # 回归损失权重# 分类损失:Varifocal Classification Loss# 正样本权重:基于预测置信度# 计算 BCE 损失并加权cls_loss = cls_loss.sum() / (cls_true.sum() + 1e-6) # 按正样本数归一化。 阅读详情

现在有这样的需求,一张表中有一个字段created_at记录创建该条记录的时间戳,另一个字段updated_at记录更新该条记录的时间戳。

我们尝试以下几个语句。

第一个,测试通过。

 CREATE TABLE temp
(
 id INT(11) PRIMARY KEY AUTO_INCREMENT,
 name VARCHAR(10),
 updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

第二个,测试不通过。报ERROR 1293 (HY000)错误。(完整错误信息:ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause)

CREATE TABLE temp
(
 id INT(11) PRIMARY KEY AUTO_INCREMENT,
 name VARCHAR(10),
 created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP,
 updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

MySQL 5.5.29中有这样的奇葩限制,不明白为什么。既然有这样的限制,那么只有绕道而行,现在尝试给出如下几种解决办法。

第一种,created_at使用DEFAULT CURRENT_TIMESTAMP或者DEFAULT now(),updated_at使用触发器。

具体解决方法如下:

1.temp表结构如下:

CREATE TABLE temp
(
 id INT(11) PRIMARY KEY AUTO_INCREMENT,
 name VARCHAR(10),
 created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP,
 updated_at timestamp NULL
);

2.插入测试数据:

  • mysql> INSERTINTOtemp(name,created_at,updated_at) VALUES('robin',now(),now()); 
  • Query OK, 1 row affected (0.03 sec) 
  •  
  •  
  • mysql> INSERTINTOtemp(name,created_at,updated_at) VALUES('wentasy',now(),now()); 
  • Query OK, 1 row affected (0.01 sec) 
  •  
  •  
  • mysql> SELECT * FROMtemp; 
  • +----+---------+---------------------+---------------------+ 
  • | id | name    | created_at          | updated_at          | 
  • +----+---------+---------------------+---------------------+ 
  • |  1 | robin  | 2014-09-01 14:00:39 | 2014-09-01 14:00:39 | 
  • |  2 | wentasy | 2014-09-01 14:01:11 | 2014-09-01 14:01:11 | 
  • +----+---------+---------------------+---------------------+ 
  • 2 rowsinset (0.00 sec) 

3.在temp上创建触发器,实现更新时记录更新时间;

delimiter |
DROP TRIGGER IF EXISTS tri_temp_updated_at;
CREATE TRIGGER tri_temp_updated_at BEFORE UPDATE ON temp
FOR EACH ROW
BEGIN
 SET NEW.updated_at = now();
END;
|
delimiter ;

4.测试。

  • mysql> UPDATEtempSETname='robinwen'WHERE id=1; 
  • Query OK, 1 row affected (0.01 sec) 
  • Rows matched: 1 Changed: 1 Warnings: 0
  •  
  •  
  • #可以看到已经记录了第一条数据的更新时间 
  • mysql> SELECT * FROMtemp; 
  • +----+----------+---------------------+---------------------+ 
  • | id | name    | created_at          | updated_at          | 
  • +----+----------+---------------------+---------------------+ 
  • |  1 | robinwen | 2014-09-01 14:00:39 | 2014-09-01 14:03:05 | 
  • |  2 | wentasy  | 2014-09-01 14:01:11 | 2014-09-01 14:01:11 | 
  • +----+----------+---------------------+---------------------+ 
  • 2 rowsinset (0.00 sec) 
【PHP面试题29】什么是PHP-FPM?它与PHP和Nginx有什么关系 PHP面试专区。计划将全覆盖PHP开发领域所有的面试题,对标资深工程师/架构师序列,欢迎大家提前关注锁定。PHP-FPM(FastCGI Process Manager)是PHP的FastCGI进程管理器,它是PHP 5.3.3及更高版本的一部分。它通过为每个请求分配一个独立的进程来提高PHP脚本的执行效率和性能,并且可以与Web服务器(如Nginx、Apache等)进行通信。PHP-FPM是PHP的FastCGI进程管理器,它通过为每个请求分配一个独立的进程来提高PHP脚本的执行效率和性能。 阅读详情

相关推荐

SMPLify-X关键点映射与OpenPose格式转换实战

本文深入解析了SMPLify-X与OpenPose之间关键点映射与格式转换的实战方法。针对SMPL、SMPL-H、SMPLX等参数化人体模型与OpenPose 2D姿态估计标准之间的数据鸿沟,文章详细对比了双方的关键点定义差异,并提供了核心的Python转换代码与映射表构建思路。通过清晰的步骤讲解与调试技巧,帮助开发者实现3D关节数据到OpenPose标准格式的高效、准确转换,为动作捕捉、3D姿态估计等应用奠定数据基础。

weixin_29046035的博客 166

Mysql:Invalid ON UPDATE clause for 'createTime' column

从高版本的mysql转储SQL文件,然后运行SQL文件到低版本的mysql: 如果表中存在datetime字段,如下: 运行SQL文件时,将出现如下错误: [Err] 1294 - Invalid ON UPDATE clause for 'createTime' column 解决办法:将`createTime` datetime DEFAULT NULL ON UPDATE ...

ITWANGBOIT的博客 5887

EPLAN二次开发实战:从API接口到定制化功能的完整指南

本文为电气工程师和自动化设计师提供了一份EPLAN二次开发的完整实战指南。文章详细介绍了从脚本、插件到独立程序三种开发模式,重点讲解了如何使用C#或VB.NET通过API接口操作EPLAN数据模型,实现定制化功能以提升设计效率,并分享了开发环境搭建、调试及项目打包分发的避坑经验。

c6d7e8f9g的博客 1118

Mysql时间字段根据时间戳更新CURRENT_TIMESTAMP

在实际开发当中,我们通常会在建表的时候添加两个时间字段而这两个时间字段的时间我们可以通过设置来让系统自动获取当前时间,不用我们手动给值。

weixin_64772672的博客 2225

LEF 5.8 Language Reference学习笔记

您可以在一个 LEF 文件中定义所有元件库信息,但这样会产生一个复杂且难以管理的大文件。相反,您可以将信息分为两个文件,一个是 "technology "LEF 文件,另一个是 "cell library "LEF 文件。

yajuan的专栏 4100

机器学习笔记之玻尔兹曼机(一)基本介绍

在受限玻尔兹曼机——模型表示(Representation)一节中以玻尔兹曼机为引,介绍了受限玻尔兹曼机。从本节开始,将正式介绍玻尔兹曼机。相比于它的表示和推断过程,我们更关注它在求解过程中出现的问题。

静静的学习就好 7924

处理mysql中Error:1294–Invalid ON UPDATE clause for “time” column的问题

在数据库中建表的过程可能会遇到设计时间戳显示插入数据的时间,有时会遇到以下的小问题,但不容易找到。该博客以免更多的人少走弯路。 在mysql数据库建表的过程中,忘记改写默认字段,导致出现1294的错误,如下所示: 这是因为timestamp类型默认有字段长度,指定长度会于之前的冲突 去掉长度限制就可以了 ...

weixin_43428157的博客 3621

到底什么是指令集?什么是微架构?他们是什么关系?

指令集、处理器架构、芯片厂商、ARM、x86,其间关系还在迷糊吗?一文迅速理清!!

车载系统攻城狮 7811

mysql 时间戳字段建立_如何建立mysql时间戳字段

我用PHP+MYSQL写一个程序,需要数据库每次插入数据时,希望数据库有一个字段my_time,自动获取当前时间的时间戳,通过phpmyadmin有没有办法建立这样的字段?你通过phpmyadmin查看表结构,下面会有插入字段的地方,选择类型一般INT,或者unsigned INT把表列的类型改了timestamp类型,默认值改成CURRENT_TIMESTAMP 就可以自动获得当前时间一个表格里...

weixin_31147827的博客 811

Vue - 快速入门,这一套就够了!(Vue core + 案例 + 效果演示)

前置条件:掌握 HTML、CSS、JavaScript、AJAX.工具:VsCode.插件:Live Server(浏览器实时预览)Ps:建议都提前下载下来,没网的时候也能用.

CYK_byte的博客 4万+

【乐企文件生成工程】乐企文件生成支持所有特定要素类型发票

【代码】【乐企文件】乐企文件生成最新更新!!!

九七的博客 850

MySQL 使用异常:Invalid ON UPDATE clause for 'createTime' column

TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

闲暇时光 5042

Python爬虫实战:利用最新技术爬取微信公众号文章(基于搜狗搜索)

使用最新Python版本确保兼容性和性能:比传统Requests更强大的HTML解析库Playwright:新一代浏览器自动化工具,比Selenium更高效Asyncio:异步IO框架提升爬虫效率Redis:分布式任务队列和去重MongoDB:非关系型数据库存储结构化数据本文详细介绍了如何利用Python最新技术栈构建一个功能强大的微信公众号文章爬虫。通过结合Playwright浏览器自动化、异步IO、分布式任务队列等技术,我们实现了一个能够绕过反爬机制、高效稳定抓取数据的解决方案。

2201_76125261的博客 1795

mysql 触发器生成时间戳_MySQL中同时存在创建和上次更新时间戳字段解决方法浅析...

在写这篇文章之前,明确我的MySQL版本。 mysqlgt; SELECT VERSION();+------------+| VERSION() |+------------+| 5.5.29-log在写这篇文章之前,明确我的MySQL版本。mysql> SELECT VERSION();+------------+| VERSION() |+------------+| 5.5.29-...

weixin_36059283的博客 264

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MySQL中同时存在创建和上次更新时间戳字段解决方法浅析;MYSQL日期 字符串 时间戳互转

mysql时间戳,时间格式转换

A_lin的博客 544

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

mysql触发器获取时间撮_MySQL中同时存在创建和上次更新时间戳字段解决方法浅析...

在写这篇文章之前,明确我的MySQL版本。mysql> SELECT VERSION(); +------------+ | VERSION() | +------------+ | 5.5.29-log | +------------+ 1 row in set (0.00 sec)第一个,测试通过。CREATE TABLE temp(id INT(11) PRIMARY KEY AUTO...

weixin_29237635的博客 218

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

mysql记录创建时间戳_MySQL中同时存在创建和更新时间戳字段解决方法浅析

MySQL中同时存在创建和更新时间戳字段解决方法浅析明确我的MySQL版本。mysql> SELECT VERSION();+------------+| VERSION() |+------------+| 5.5.29-log |+------------+1 row in set (0.00 sec)现在有这样的需求,一张表中有一个字段created_at记录创建该条记录的时间戳,另...

weixin_26846533的博客 411

如何在 MySQL 中自动生成和更新时间戳:深入解析与实践

通过本文的学习,你应该已经掌握了如何在 MySQL 中自动生成和更新时间戳字段。选择合适的字段类型:根据需求选择DATETIME或TIMESTAMP。使用:确保在插入时自动生成时间戳。使用:确保在更新时自动更新时间戳。避免手动管理时间戳:尽量依赖数据库的自动功能,减少出错的可能性。通过合理使用 MySQL 的时间戳功能,你可以大大简化数据库设计和管理工作,同时提高数据的准确性和可追溯性。希望本文对你有所帮助!

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 8530

MySQL中同时存在创建和更新时间戳字段解决方法浅析

MySQL中同时存在创建和更新时间戳字段解决方法浅析 明确我的MySQL版本。mysql> SELECT VERSION();+------------+| VERSION() |+------------+| 5.5.29-log |+------------+1 row in set (0.00 sec) 现在有这样的需求,一张表中有一个字段created_at记录创建该条记录的时...

weixin_30325793的博客 102

MySQL中同一时候存在创建和上次更新时间戳字段解决方法浅析

在写这篇文章之前。明白我的MySQL版本号。mysql> SELECT VERSION(); +------------+ | VERSION() | +------------+ | 5.5.29-log | +------------+ 1 row in set (0.00 sec)如今有这种需求,一张表中有一个字段created_at记录创建该条记录的时间戳,另一个字段updat...

weixin_34191845的博客 139

mysql设置update时间字段自动更新

数据库表设计阶段中有个最佳实践,需要在每个表中预留创建时间create_time, 修改时update_time字段 阿里巴巴编码规约中建议命名为gmt_create,gmt_modifie,并且类型datetime 其中,create_time字段在一般开发中会设置默认值为“CURRENT_TIMESTAMP”,create_time设置默认为“CURRENT_TIMESTAMP”。 在之前的...

东子的博客 细节决定成败,点滴铸就辉煌。 2万+

如何建立mysql时间戳字段

<br />我用PHP+MYSQL写一个程序,需要数据库每次插入数据时,希望数据库有一个字段my_time,自动获取当前时间的时间戳,通过phpmyadmin有没有办法建立这样的字段?<br />你通过phpmyadmin查看表结构,下面会有插入字段的地方,选择类型一般INT,或者unsigned INT <br />把表列的类型改了timestamp类型,默认值改成CURRENT_TIMESTAMP 就可以自动获得当前时间<br />一个表格里面只能用一个<br />我不是要通过PHP代码写入数据库哦,而

lq547854的专栏 5559

mysql5.5不能同时存在两个时间戳问题解决方案

问题描述: 需求:当创建这条记录时create_time和update_time都自动插入当前系统时间,当修改这条记录时,更新update_time 相关sql: 错误信息: Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause 原因分析: 根据错误信息可知在DEFAULT或ON UPDATE子句中,只有一个T

it浅阳的博客 3218

Java增量更新为何必须用时间戳机制而非业务字段

增量更新是分布式系统数据同步的基础能力,其本质是基于时序的可靠变更捕获。传统依赖数据库update_time等业务字段的方式存在时间可篡改、多节点时钟偏差、主从延迟导致漏数据等根本性缺陷。真正健壮的方案需构建端到端的时间可信体系:从JVM的System.currentTimeMillis()与nanoTime校准机制,到MySQL TIMESTAMP(3)字段设计与时区统一(推荐TIMESTAMP+Instant组合),再到滑动窗口的数据库服务端时间锚定与自适应调优。该机制不仅解决Java后端在电商、物流、

weixin_30470643的博客 288

MySQL丢失更新问题的出现和解决

丢失更新问题(Lost Update)指的是两个或多个事务在读同一数据并基于此数据进行更新操作时,某些更新操作被覆盖或丢失。例如,事务A和事务B都读取了某个数据,然后事务A更新了该数据,而事务B在没有意识到事务A的更新的情况下,也更新了该数据,导致事务A的更新被覆盖。

常备不懈 2854

mysql增量抽取方法_增量抽取-时间戳方式实现

----------时间戳方式抽取数据------------------------介绍:它是一种基于快照比较的变化数据捕获方式,在源表上增加一个时间戳字段,系统中更新修改表数据的时候,同时修改时间戳字段的值。当进行数据抽取时,通过比较上次抽取时间与时间戳字段的值来决定抽取那些数据。有的数据库的时间戳支持自动更新,即表的其他字段的数据发生变化时,自动更新时间戳字段。有的数据库不支持时间戳的自动更...

weixin_28938171的博客 972
上一篇: MyBatis 基于接口编程学习笔记
下一篇: Access restriction: The type BASE64Decoder is not accessible due to restriction on required library
congmingPIG_htt
博客等级 码龄11年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值