MySQL中timestamp(时间戳)自动更新详解

MySQL中当记录更新时timestamp类型自动更新时间

  我使用navicat,如果将日期类型选择为timestamp时,会发现IDE多了一个选项:

  查看IDE自动生成的sql语句:

  lastUpdate` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP

  复制代码

  如果去掉这个选项后:

  `lastUpdate` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'

  复制代码

  区别就是“ ON UPDATE CURRENT_TIMESTAMP”了,他的作用就是当记录有“变化“时会自动更新lastUpdate时间为系统当前时间。

  注意:特意强调了有变化,换句话说,即使使用update语句,但是内容没有变化的话,该值就不会自动更新了。

  TIMESTAMP的变体

  1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

  在创建新记录和修改现有记录的时候都对这个数据列刷新

  2,TIMESTAMP DEFAULT CURRENT_TIMESTAMP 在创建新记录的时候把这个

  字段设置为当前时间,但以后修改时,不再刷新它

  3,TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在创建新记录的时候把这个字段设置为0,

  以后修改时刷新它

  4,TIMESTAMP DEFAULT ‘yyyy-mm-dd hh:mm:ss’ ON UPDATE CURRENT_TIMESTAMP

  在创建新记录的时候把这个字段设置为给定值,以后修改时刷新它

  MySQL目前不支持列的Default 为函数的形式,如达到你某列的默认值为当前更新日期

  与时间的功能,你可以使用TIMESTAMP列类型


展开阅读全文

没有更多推荐了,返回首页