美文网首页
关于timestamp的自动更新

关于timestamp的自动更新

作者: SkyHive | 来源:发表于2017-02-06 15:55 被阅读0次

    最近笔者在“温习TP框架”(其实就是不会然后抓紧时间啃),从最简单Blog开始做起,以前学习的时候是跟着教程,用time()函数获取当前时间戳,然后用int型数据来存储。这一次我突然想用Mysql内置的时间类型的数据——timestamp。

    Mysql中常用到的除了timestamp之外还有datetime,我们先来比较一下这两个的区别:

    • timestamp占用的存储空间为4个字节,所以它能表示的时间范围为1970.1.1 08:00:01~2038.01.19 11:14:07,这个范围比较小,容易出现超出的情况。
    • datetime占用的存储空间为8个字节,所以它能表示的时间范围为1000.01.01 00:00:00~9999.12.31 23:59:59,这个时间范围完全够用了。

    其实timestamp这个时间范围目前也是够用的,而且我也只是来学习的,所以我就选择了这个数据类型。然而后来我发现我在修改表中数据的时候时间并没有自动更新,这就比较奇怪了,我当时的sql代码是这样的:

    date timestamp not null default current_timestamp;
    

    后来一顿google发现了问题所在,如果这个数据属性没有加上default current_timestamp的话,就会默认创建数据时获取当前时间且数据更新时更新时间,然而加上了default current_timestamp则必须要再加上on update current_timestamp才能自动更新时间。
    总结如下:

    • 如果该列属性default current_timestamp 和 on update语句都有,则初始值为当前时间并自动更新
    • 如果该列属性default current_timestamp 和 on update语句都没有,则默认初始值为当前时间并自动更新
    • 如果该列属性只有default current_timestamp,那么初始值当前时间且时间不会自动更新
    • 如果该列属性只有on update语句,则初始值为0,会自动更新时间

    相关文章

      网友评论

          本文标题:关于timestamp的自动更新

          本文链接:https://www.haomeiwen.com/subject/qkkuittx.html