MySQL数据库中timestamp自动更新时间的方法

mysqltimestamp数据类型是一个比较特殊的数据类型,他可以自动在你不使用程序更新情况下只要你更新了记录timestamp会自动更新时间
通常表中会有一个create date 创建日期的字段,其它数据库均有默认值的选项。mysql也有默认值timestamp,但在mysql中,不仅是插入就算是修改也会更新timestamp的值!
这样一来,就不是创建日期了,当作更新日期来使用比较好!
因此在mysql中要记录创建日期还得使用datetime 然后使用now() 函数完成!
1,timestamp default current_timestamp on update current_timestamp
在创建新记录和修改现有记录的时候都对这个数据列刷新
2,timestamp default current_timestamp 在创建新记录的时候把这个
字段设置为当前时间,但以后修改时,不再刷新它
3,timestamp on update current_timestamp 在创建新记录的时候把这个字段设置为0
、自动update 和insert 到当前的时间:
表:
———————————
table create table
—— ————————– create table `t1` ( `p_c` int(11) not null, `p_time` timestamp not null default current_timestamp on update current_timestamp ) engine=innodb default charset=gb2312
数据:
1 2007-10-08 11:53:35
2 2007-10-08 11:54:00
insert into t1(p_c) select 3;update t1 set p_c = 2 where p_c = 2;
数据:
1 2007-10-08 11:53:35
2 2007-10-08 12:00:37
3 2007-10-08 12:00:37
2、自动insert 到当前时间,不过不自动update。
表:
———————————
table create table
—— —————————
create table `t1` ( `p_c` int(11) not null, `p_time` timestamp not null default current_timestamp ) engine=innodb default charset=gb2312
数据:
insert into t1(p_c) select 4;update t1 set p_c = 3 where p_c = 3;
1 2007-10-08 11:53:35
2 2007-10-08 12:00:37
3 2007-10-08 12:00:37
4 2007-10-08 12:05:19
3、一个表中不能有两个字段默认值是当前时间,否则就会出错。不过其他的可以。
表:
———————————
table create table
—— ————————– create table `t1` ( `p_c` int(11) not null, `p_time` timestamp not null default current_timestamp, `p_timew2` timestamp not null default ‘0000-00-00 00:00:00’ ) engine=innodb default charset=gb2312
数据:
1 2007-10-08 11:53:35 0000-00-00 00:00:00
2 2007-10-08 12:00:37 0000-00-00 00:00:00
3 2007-10-08 12:00:37 0000-00-00 00:00:00
4 2007-10-08 12:05:19 0000-00-00 00:00:00
比较之下,我的语句少了“on update current_timestamp”或多了“default current_timestamp”。如此一来,这个timestamp字段只是在数据insert的时间建立时间,而update时就不会有变化了。当然,如果你就是想达到这个目的倒也无所谓 1: 如果定义时default current_timestamp和on update current_timestamp子句都有,列值为默认使用当前的时间戳,并且自动更新。
2: 如果不使用default或on update子句,那么它等同于default current_timestamp on update current_timestamp。
3: 如果只有default current_timestamp子句,而没有on update子句,列值默认为当前时间戳但不自动更新。
4: 如果没用default子句,但有on update current_timestamp子句,列默认为0并自动更新。
5: 如果有一个常量值default,该列会有一个默认值,而且不会自动初始化为当前时间戳。如果该列还有一个on update current_timestamp子句,这个时间戳会自动更新,否则该列有一个默认的常量但不会自动更新。
换句话说,你可以使用当前的时间戳去初始化值和自动更新,或者是其中之一,也可以都不是。(比如,你在定义的时候可以指定自动更新,但并不初始化。)下面的字段定义说明了这些情况:

 以上就是MySQL数据库中timestamp自动更新时间的方法的内容,更多相关内容请关注PHP中文网(www.php.cn)!

美间AI 美间AI

美间AI:让设计更简单

美间AI 45 查看详情 美间AI

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/420805.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月7日 09:14:59
下一篇 2025年11月7日 09:18:05

相关推荐

  • python如何连接mysql数据库_python使用PyMySQL连接MySQL数据库教程

    Python连接MySQL通常使用PyMySQL库,它通过提供接口实现数据增删改查,建立连接需安装库、配置参数、创建游标、执行SQL、提交事务并关闭连接;推荐使用环境变量或配置文件管理数据库凭证以提升安全性,避免硬编码;PyMySQL为纯Python实现,兼容Python 3且安装简便,相较MySQ…

    2025年12月14日
    000
  • 解耦Flask-SQLAlchemy:在应用外部执行数据库操作的教程

    本教程旨在解决在Flask应用外部(如定时任务或后台服务)访问Flask-SQLAlchemy数据库模型时遇到的导入错误和循环引用问题。通过将SQLAlchemy实例与Flask应用解耦,并利用应用程序上下文,我们能够在一个独立的文件中安全、高效地执行数据库操作,确保代码的可维护性和可扩展性。 背景…

    2025年12月14日
    000
  • Python怎么连接MySQL数据库_PyMySQL与mysql-connector-python使用教程

    Python连接MySQL常用PyMySQL和mysql-connector-python,前者纯Python实现易部署,后者官方出品性能强兼容好;核心步骤包括连接、游标、执行、提交、关闭;选择依据项目需求与团队偏好。 Python连接MySQL数据库,通常我们会借助第三方库来实现。目前最主流且推荐…

    2025年12月14日
    000
  • 解决Django AutoField主键序列在手动指定ID后未更新的问题

    本文探讨Django模型在使用AutoField作为主键时,通过显式指定ID创建对象后,默认ID生成机制失效的问题。当数据库内部序列未同步更新时,会导致主键冲突。教程提供了一种通过手动执行SQL命令重置数据库序列的解决方案,确保后续对象创建能正确获取递增ID。 1. 问题描述:Django Auto…

    2025年12月14日
    000
  • 解决Django AutoField主键序列不同步问题

    当在Django中为模型对象手动指定主键(ID)时,默认的AutoField所依赖的数据库序列可能不会自动更新。这会导致在后续创建新对象时,Django尝试分配一个已存在的主键ID,从而引发IntegrityError。本文将详细解释此问题的原因,并提供一个通用的解决方案,通过手动更新数据库序列来确…

    2025年12月14日
    000
  • 解决Django手动设置主键ID后Auto Increment序列不同步的问题

    当在Django中使用默认AutoField主键的模型,通过手动指定id创建对象时,数据库的自动递增序列可能不会同步更新,导致后续不指定id创建对象时出现主键冲突。本文将详细介绍这一问题的原因,并提供一个基于PostgreSQL的通用解决方案,通过SQL命令手动重置主键序列,确保数据完整性和应用的正…

    2025年12月14日
    000
  • Django AutoField序列重置:解决显式ID创建后的主键冲突问题

    当在Django中通过显式ID创建对象后,默认的AutoField序列可能不再正确递增,导致主键冲突。本文将深入探讨此问题的原因,并提供一个使用SQL命令手动重置数据库序列的专业解决方案,确保AutoField能继续正常生成唯一ID,避免IntegrityError。 Django AutoFiel…

    2025年12月14日
    000
  • python如何实现一个定时任务_python实现定时任务的多种方式

    Python定时任务可通过多种方式实现,从简单的time.sleep()到APScheduler、Celery等复杂方案。答案是根据任务需求选择合适方案:对于简单脚本,可使用time.sleep()或threading.Timer;需要持久化和动态管理时,APScheduler更优;高并发分布式场景…

    2025年12月14日
    000
  • 正确处理 Python 中的 NULL 值:字符串与浮点数的转换

    在 Python 中处理数据库查询结果时,经常会遇到 NULL 值,也就是 Python 中的 None。特别是在将数据转换为 JSON 格式返回时,需要将 None 转换为合适的值,例如空字符串 “” 或数值 0.00。原始代码的问题在于,isinstance 的判断在 i…

    2025年12月14日
    000
  • Python中正确处理数据库查询结果中的NULL值

    本文旨在帮助开发者理解并解决在Python处理数据库查询结果时遇到的NULL值问题。通过分析常见的错误处理方式,提供一种更简洁有效的方案,确保NULL值能够被正确转换为期望的格式,避免数据类型判断错误,从而保证数据处理的准确性。 在从数据库中检索数据时,经常会遇到NULL值。在Python中,NUL…

    2025年12月14日
    000
  • Python中正确处理数据库NULL值:类型判断与转换

    本文旨在解决Python处理从数据库读取的NULL值时遇到的类型判断和转换问题。通过分析常见的错误处理方式,并提供正确的代码示例,帮助开发者有效地将数据库中的NULL值转换为Python中合适的类型,例如空字符串或数值0,从而避免程序出错并保证数据的一致性。 在Python中,从数据库读取数据时,经…

    2025年12月14日
    000
  • 实现服务器间非阻塞通信:Python Flask与Laravel的异步交互策略

    本文探讨了在Python Flask和Laravel服务器之间进行数据交互时,如何避免传统阻塞式请求导致的性能瓶颈。核心解决方案是采用异步I/O模型,特别是利用Python的asyncio和aiohttp库,或支持异步的Web框架(如Flask 3.0+或Starlette),以实现服务器线程在等待…

    2025年12月14日
    000
  • 大规模数据抓取时的性能优化与去重

    大规模数据抓取需兼顾性能优化与数据去重,前者通过异步并发、代理管理、高效解析和分布式架构提升效率,后者采用唯一标识、数据库唯一索引、Redis缓存、布隆过滤器及内容相似度算法实现多层级去重,在实际应用中常结合布隆过滤器快速过滤、Redis精确去重、数据库最终校验的分层策略,同时利用异步编程提升I/O…

    2025年12月14日
    000
  • Python中的协程(Coroutine)和异步编程是如何工作的?

    答案:调试和优化Python异步代码需理解事件循环、使用asyncio内置工具、避免阻塞调用、合理管理任务与异常。具体包括:利用asyncio.run()和日志监控协程执行;用asyncio.create_task()并发运行任务并捕获异常;避免在协程中调用time.sleep()等阻塞函数,改用a…

    2025年12月14日
    000
  • Web 框架:Django 和 Flask 的对比与选型

    Djan%ignore_a_1% 和 Flask,选哪个?简单来说,Django 适合大型项目,自带全家桶;Flask 适合小型项目,灵活自由。 Django 和 Flask 都是非常流行的 Python Web 框架,但它们的设计哲学和适用场景有所不同。选择哪个框架,取决于你的项目需求、团队技能和…

    2025年12月14日
    000
  • 协程(Coroutine)与 asyncio 库在 IO 密集型任务中的应用

    协程通过asyncio实现单线程内高效并发,利用事件循环在IO等待时切换任务,避免线程开销,提升资源利用率与并发性能。 协程(Coroutine)与 Python 的 asyncio 库在处理 IO 密集型任务时,提供了一种极其高效且优雅的并发解决方案。它允许程序在等待外部操作(如网络请求、文件读写…

    2025年12月14日
    000
  • 如何进行数据库迁移(Migration)?

    数据库迁移的核心理念是“结构演进的版本控制”,即通过版本化、可追踪、可回滚的方式管理数据库Schema变更,确保团队协作中数据库结构的一致性。它关注的是表结构、索引、字段等“骨架”的变化,如添加字段或修改列类型,强调与应用代码迭代同步。而数据迁移则聚焦于“血肉”,即数据内容的转移、清洗、转换,例如更…

    2025年12月14日
    000
  • 什么是SQL注入?如何在Python中避免?

    SQL注入危险且易导致数据泄露或系统瘫痪,其发生源于用户输入被直接拼接进SQL语句;正确防范方式是使用参数化查询或ORM框架,如Python中sqlite3的?占位符或SQLAlchemy等ORM工具,确保用户输入被视为数据而非代码,从而彻底隔离风险。 SQL注入是一种非常危险的数据库安全漏洞,它允…

    2025年12月14日
    000
  • ORM(如 SQLAlchemy, Django ORM)的工作原理与优缺点

    ORM是连接面向对象编程与关系型数据库的桥梁,通过将数据库表映射为代码中的类和对象,实现用%ignore_a_1%操作数据而无需手动编写SQL。其核心机制包括模型定义、查询转换、会话管理与事务持久化,能显著提升开发效率、增强代码可维护性并支持数据库无关性。但ORM也带来性能开销、学习成本及N+1查询…

    2025年12月14日
    000
  • 如何进行Python项目的性能剖析(Profiling)?

    性能剖析是通过工具定位Python代码中耗时和资源消耗大的部分。首先用cProfile进行函数级分析,找出“时间大户”,再用line_profiler深入分析热点函数的逐行执行情况。两者结合实现从宏观到微观的优化。此外,还需关注内存(memory_profiler)、I/O(手动计时、数据库分析)和…

    2025年12月14日
    000

发表回复

登录后才能评论
关注微信