ITPub博客

首页 > 数据库 > MySQL > MySQL之timestamp

MySQL之timestamp

原创 MySQL 作者:541732025 时间:2015-06-05 14:31:45 0 删除 编辑
在mysql中,timestamp是经常用到的类型,大小是4个字节,取值范围是1970-2038。如果一个表中有多列timestamp字段,在使用的时候需要注意一些细节。

点击(此处)折叠或打开

  1. CREATE TABLE `test2` (
  2.   id INT(11) NOT NULL,
  3.   t1 TIMESTAMP,
  4.   t2 TIMESTAMP,
  5.   PRIMARY KEY (id)
  6. ) ENGINE=INNODB DEFAULT CHARSET=utf8
创建一个表,两个timestamp字段,t1、t2什么约束都不写,那么建表以后,查看表的DDL信息会是这样:

点击(此处)折叠或打开

  1. CREATE TABLE `test2` (
  2.   id int(11) NOT NULL,
  3.   t1 timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  4.   t2 timestamp NOT NULL DEFAULT \'0000-00-00 00:00:00\',
  5.   PRIMARY KEY (`id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8
可以看到,什么都不写,第一个timestamp字段默认就是DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;而第二个timestamp字段默认是0。
如果t1、t2我都手动指定DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP呢?效果会怎样?
结果,MySQL会报错,创建失败!

点击(此处)折叠或打开

  1. CREATE TABLE `test2` (
  2.   `id` INT(11) NOT NULL,
  3.   `t1` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  4.   `t2` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  5.   PRIMARY KEY (`id`)
  6. ) ENGINE=INNODB DEFAULT CHARSET=utf8


  7. 1 queries executed, 0 success, 1 errors, 0 warnings
  8. 查询:CREATE TABLE `test2` ( `id` int(11) NOT NULL, `t1` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `t2...
  9. 错误代码: 1293
  10. Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
  11. 执行耗时 : 0 sec
  12. 传送时间 : 0 sec
  13. 总耗时 : 0.004 sec
错误提示:只允许一个timestamp字段(默认第一个)能够利用CURRENT_TIMESTAMP,不管是default,还是on update。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28912557/viewspace-1688276/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Storm实战之TopN
请登录后发表评论 登录
全部评论

注册时间:2013-05-23

  • 博文量
    127
  • 访问量
    515726