MYSQL中timestamp类型自动更新的用法心得

库表中用到了时间的字段,首先百度中查了关于timestamp的一些说明,发现说法不太统一。最终经机过验证得出如下结论:

   1.实验环境及版本:MYSQL 5.6 LINUX系统.

   2.默认情况下,在一个表中,第一个出现的timestamp字段,在不设置任何默认值的情况下,建表脚本为: 

    CREATETIME           timestamp, 

  但你建完后再查看表的DDL时,发现已成了这样:

   CREATETIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

   这个并不奇怪,是因为数据库会对一张表中第一个出现的字段,自动增加默认值。要注意的是,转后的结果是,这个自段就成了自动更新的字段,即(插入记录,更新记录)的时候,数据库会自动记录时间到这个字段。

    3.当表中出现第二个timestamp字段时,且也不设置任何默认值的情况下,建表脚本同样为: 

    CREATETIME           timestamp, 

  但你建完后再查看表的DDL时,发现已成了这样:

    timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',

  那么问题来了,这个字段的值,一是不再自动更新,二是,在插入记录时,字段值就是'0000-00-00 00:00:00'。类似于死字段了一下,前端程序也不太好更新。不知道MYSQL为何这样处理。

 

   对于一张表,通常会有两个性质的字段,一个是记录插入时间,即更新时,此值不再变化。二个是记录最后更新时间,也就是随着更新次数变化而更新。那在一个表里能否两个这样类型的字段来实现数据级的自动管理呢?答案是肯定的。做法如下:

   1.用最后更新时间字段做为此表的第一个timestamp段,不用设置任何默认值。

   2.把插入时间的字段做为第二个或者以后的字段来建,同时指定默认值为:CURRENT_TIMESTAMP。

     生成的建本脚本为:TIMESTAMP DEFAULT CURRENT_TIMESTAMP

      在POWERDESIGNER中的设置方法为:TALBE->Columns,双击要设置的字段弹出窗口(Column Properties)->Standard 

Checkes选项卡上,设置Default。记得一定要下拉选择 “CURRENT_TIMESTAMP”,如果你的PowerDesginer中没有下拉选项,那么你输上也是不管用的。这个问题是因你的 PowerDesginer版本问题。

 

 

转载于:https://my.oschina.net/6955825/blog/760853

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值