MySQL的timestamp类型自动更新问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL的timestamp类型自动更新问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2352字,纯文字阅读大概需要4分钟。
内容图文
可以用下面的任何一种方式声明:- 如果定义时DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP子句都有,列值为默认使用当前的时间戳,并且自动更新;
- 如果不使用DEFAULT或ON UPDATE子句,那么它等同于DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
- 如果只有DEFAULT CURRENT_TIMESTAMP子句,而没有ON UPDATE子句,列值默认为当前时间戳但不自动更新;
- 如果没用DEFAULT子句,但有ON UPDATE CURRENT_TIMESTAMP子句,列默认为0并自动更新;
- 如果有一个常量值DEFAULT,该列会有一个默认值,而且不会自动初始化为当前时间戳。如果该列还有一个ON UPDATE CURRENT_TIMESTAMP子句,这个时间戳会自动更新,否则该列有一个默认的常量但不会自动更新
换句话说,你可以使用当前的时间戳去初始化值和自动更新,或者是其中之一,也可以都不是。(比如,你在定义的时候可以指定自动更新,但并不初始化。)下面的字段定义说明了这些情况:
自动初始化和更新: `ts` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 只自动初始化: `ts` timestamp DEFAULT CURRENT_TIMESTAMP 只自动更新 `ts` TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP 只是给一个常量(注:0000-00-00 00:00:00) `ts` timestampDEFAULT 0
注意:如果不使用DEFAULT或ON UPDATE子句,那么它等同于DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
示例:
CREATE TABLE `test` ( `ww` VARCHAR( 9 ) NOT NULL , `t1` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `t2` TIMESTAMP NOT NULL ) ENGINE = MYISAM
这个情况下,数据插入时,t1会记录当前时间,t2为默认值(0000-00-00 00:00:00),等同下面的语句:
CREATE TABLE `test` ( `ww` VARCHAR( 9 ) NOT NULL , `t1` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `t2` TIMESTAMP NOT NULL DEFAULT ‘0000-00-00 00:00:00‘ ) ENGINE = MYISAM
根据上面注意事项,示例的创表语句完整的语句应当为:
CREATE TABLE `test` ( `ww` VARCHAR( 9 ) NOT NULL , `t1` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `t2` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE = MYISAM
曾经想这样设计一个表,这个表有两个timestamp列,一个可以记录更新时间,一个可以记录初始时间,但是尝试多次以后,我发现mysql好像做不到这一点,不知道这个是mysql的缺陷还是自我优化,因为,这个功能可以使用datetime实现记录初始化的时间,只是需要insert的时候指定一下.
MySQL的timestamp类型自动更新问题
标签:比较 设计 根据 ble 导致 varchar div 建表 nbsp
本文系统来源:http://www.cnblogs.com/moonandstar08/p/6853675.html
内容总结
以上是互联网集市为您收集整理的MySQL的timestamp类型自动更新问题全部内容,希望文章能够帮你解决MySQL的timestamp类型自动更新问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。