iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Mysql使用onupdatecurrent_timestamp问题
  • 682
分享到

Mysql使用onupdatecurrent_timestamp问题

Mysqlcurrent_timestamponupdatecurrent_timestampMysqltimestamp 2023-03-20 14:03:56 682人浏览 八月长安
摘要

目录Mysql使用on update current_timestamp注意点先说结论CURRENT_TIMESTAMP()和ON UPDATE及索引相关基本概率代码与实例总结mys

mysql使用on update current_timestamp注意点

最近项目里时间字段(datetime,timestamp)用到了ON UPDATE CURRENT_TIMESTAMP属性,自动更新列时间戳。以下记录一些需注意的地方。

先说结论

如果你设置了时间随当前时间戳更新( ON UPDATE CURRENT_TIMESTAMP),那么当你更新字段时,只有字段值发生变化了,你的时间字段才会变为UPDATE操作时的时间。

即没有字段更新时,虽然执行了update语句,也执行成功了,时间字段是不会更新的。

比如我们新建一张表:

CREATE TABLE `t_temp` (
  `id` int(11) NOT NULL DEFAULT '0',
  `username` varchar(255) DEFAULT NULL,
  `upd_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '默认取当前时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

然后插入一行数据,然后执行更新。

UPDATE t_temp SET username = 'mm' WHERE id = 1;

会发现时间列不会更新。

同样,在程序中使用了一些框架,比如tk-mybatis,使用更新方法时(比如int updateByPrimaryKeySelective(T record);方法),如果字段没有实际更新,虽然语法执行了,时间字段也不会更新,这点在系统中容易忽视。

CURRENT_TIMESTAMP()和ON UPDATE及索引相关

基本概率

CURRENT_TIMESTAMP()可以把MYsql中TIMESTAMP类型设置为当前的时间。

ON UPDATE个人觉得这个是个神器,一般用于当某个字段是updateTIme,最后修改时间的时候,使用这个ON UPDATE即可。这样就不用开发者自己去处理了,MySQL能自动将其处理。

最后来说下索引,这个是来源于百度,具体是谁的,我也忘记了:索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。

更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。

要注意的是,建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件。对于一个经常需要更新和插入的表格,就没有必要为一个很少使用的where字句单独建立索引了,对于比较小的表,排序的开销不会很大,也没有必要建立另外的索引。

代码与实例

如下建表代码:

CREATE TABLE timeDemo(
 
	id VARCHAR(64) NOT NULL,
	timeTest TIMESTAMP NOT NULL,
	PRIMARY KEY (id)
);

当添加一个新数据的时候:

他会自动创建时间,比如某个订单表,他要记录下订单的时间,就可以使用这种方法进行处理。

包括updateTime,最后更新时间:

CREATE TABLE timeDemo2(
 
	id VARCHAR(64) NOT NULL,
	createTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
	updateTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP(),
	PRIMARY KEY (id)
 
);

//上面这个mysql5.7以上版本不会有问题,但5.7以下版本就会有问题

//5.7以下的版本推荐使用程序去插入。

这里用5.5演示下ON UPDATE的效果

CREATE TABLE timeDemo3(
 
	id VARCHAR(64) NOT NULL,
	updateTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP(),
	PRIMARY KEY (id)
);

当修改了这个表的某些数据后,updateTime这个数值会自动更新。

每次对这条记录进行更新,updateTime就会自动更新,这样的话,就不用程序员自己去处理了。

这里可以发现,难过很多互联网公司都喜欢用MySQL5.7以上的版本,而传统行业还是在用MySQL5.5版本。

说下索引key和index

CREATE TABLE timeDemo4(
 
	id VARCHAR(64) NOT NULL,
	id2 VARCHAR(64) NOT NULL,
	updateTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP(),
	PRIMARY KEY (id),
	KEY(id2)
)ENGINE=INNODB DEFAULT CHARSET=utf8

普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHERE column = ...)或排序条件(ORDER BY column)中的数据列创建索引。

只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

您可能感兴趣的文档:

--结束END--

本文标题: Mysql使用onupdatecurrent_timestamp问题

本文链接: https://www.lsjlt.com/news/200561.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql使用onupdatecurrent_timestamp问题
    目录Mysql使用on update current_timestamp注意点先说结论CURRENT_TIMESTAMP()和ON UPDATE及索引相关基本概率代码与实例总结Mys...
    99+
    2023-03-20
    Mysql current_timestamp on update current_timestamp Mysql timestamp
  • Mysql使用on update current_timestamp问题
    目录mysql使用on update current_timestamp注意点先说结论CURRENT_TIMESTAMP()和ON UPDATE及索引相关基本概率代码与实例总结Mysql使用on update curre...
    99+
    2023-03-20
    Mysql current_timestamp on update current_timestamp Mysql timestamp
  • Redhat5下使用MySql时的问题有哪些
    这篇文章主要介绍Redhat5下使用MySql时的问题有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!首先是从无法远程连接开始的,虽然间接遇到一些问题。遇到就找出问题,发后总结发...
    99+
    2024-04-02
  • Mysql使用on update current_timestamp问题怎么解决
    本文小编为大家详细介绍“Mysql使用on update current_timestamp问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Mysql使用on update current...
    99+
    2023-07-05
  • Macosx下使用docker/mysql会出现什么问题
    这篇文章主要为大家展示了“Macosx下使用docker/mysql会出现什么问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Macosx下使用docker/...
    99+
    2024-04-02
  • 关于spring boot使用 jdbc+mysql 连接的问题
    1.创建文件,勾选JDBC和mysql pom.xml中添加了mysql驱动包和jdbc启动器 2.application.yml添加数据库的配置 spring: dataso...
    99+
    2024-04-02
  • 如何解决MySQL使用中遇到的问题
    这篇文章给大家分享的是有关如何解决MySQL使用中遇到的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。sql_mode=only_full_group_by引起group b...
    99+
    2024-04-02
  • MYSQL 使用GROUP_CONCAT函数返回值缺失问题
    MySQL中的GROUP_CONCAT函数用于将查询结果集中的多行数据合并为一行,常用于统计分组聚合操作。然而,在使用GROUP_CONCAT时,可能会遇到截断问题,即合并后的字符串长度超过了MySQL的配置限制,导致结果不完整。本文将介绍...
    99+
    2023-09-15
    mysql 数据库 bash
  • 如何解决MySQL使用中文乱码问题
    这篇文章给大家分享的是有关如何解决MySQL使用中文乱码问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、中文乱码1.1、中文乱码 create table user(name&...
    99+
    2023-06-28
  • 使用Go驱动插入时MySQL编码问题
    php小编鱼仔给大家带来关于使用Go驱动插入时MySQL编码问题的解决方法。在使用Go编写MySQL插入操作时,有时会遇到编码不一致的问题,导致数据插入出现乱码或无法插入的情况。这篇文...
    99+
    2024-02-09
  • Mysql如何使用kill命令解决死锁问题
    这篇文章给大家介绍Mysql如何使用kill命令解决死锁问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在使用mysql运行某些语句时,会因数据量太大而导致死锁,没有反映。这个时候,...
    99+
    2024-04-02
  • centos下使用jemalloc解决Mysql内存泄漏问题
    参考: MySQL bug:https://bugs.mysql.com/bug.phpid=83047&tdsourcetag=s_pcqq_aiomsg      https://github.com/jemalloc/jemalloc...
    99+
    2023-09-26
    centos mysql linux
  • Mysql使用sum()函数返回null的问题详解
    目录介绍问题验证解决区别参考总结介绍 SUM()函数用于计算一组值或表达式的总和,SUM()函数的语法如下: SUM(DISTINCT expression) SUM()函数是如何...
    99+
    2024-04-02
  • MySQL——常见问题
      NULL和空值的区别 空值不占空间,NULL值占空间。当字段不为NULL时,也可以插入空值。 当使用 IS NOT NULL 或者 IS NULL 时,只能查出字段中没有不为NULL的或者为 NULL 的,不能查出空值。 判断NULL ...
    99+
    2023-09-29
    mysql 数据库
  • mysql闪退问题
    如何解决登录mysql时出现的闪退问题 [toc] 在很长一段时间没使用mysql后,下一次使用时您可能会遇到登录时MySQL闪退的问题。 即当你打开mysql的控制台端,输入密码,之后闪退。 ...
    99+
    2023-09-13
    mysql Powered by 金山文档
  • mysql load data问题
    一、error 2068 首先连接数据库,执行load data命令,问题如下: ERROR 2068 (HY000): LOAD DATA LOCAL INFILE file request rejected due to restr...
    99+
    2023-10-06
    mysql 数据库 sql
  • pytest使用问题总结
    问题一、AttributeError: module 'pytest' has no attribute 'allure'解决方法:pip3 uninstall pytest-allure-adaptorpip3 install allur...
    99+
    2023-01-31
    pytest
  • Vue中使用setTimeout问题
    目录Vue使用setTimeout使用setTimeout存在的潜在问题总结Vue使用setTimeout 今天使用setTimeout 来修改一个变量的值以实现提示框的自动消失。...
    99+
    2023-01-28
    Vue setTimeout Vue使用setTimeout 使用setTimeout问题
  • mysql unique key在查询中的使用与相关问题
    1、建表语句: CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_n...
    99+
    2024-04-02
  • 如何解决MySQL中使用innobackup 2.4遇到的问题
    这篇文章将为大家详细讲解有关如何解决MySQL中使用innobackup 2.4遇到的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 一 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作