现在的位置: 首页 > 综合 > 正文

mysql中timestamp自动更新

2012年09月07日 ⁄ 综合 ⁄ 共 1542字 ⁄ 字号 评论关闭
CREATE TABLE `ts` (                                                               
          `ts1` timestamp NOT NULL ,
          `ts2` timestamp NOT NULL default CURRENT_TIMESTAMP,
    `ts3` timestamp NULL default NULL                           
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8

错误码: 1293
Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time     : 00:00:00:000

创建的时候ts1 跟ts2 是一样的,只能有一个更新的时候更新

CREATE TABLE `ts` (                                                               
        
      `ts2` timestamp NOT NULL default CURRENT_TIMESTAMP,
    `ts3` timestamp NULL default NULL                           
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8
这样子更新后的ts2不会自动更新

CREATE TABLE `ts` (                                                               
      `ts1` timestamp NOT NULL ,      
    `ts3` timestamp NULL default NULL                           
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8
插入之后SQL语句变成了
CREATE TABLE `ts` (                                                               
          `ts1` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
          `ts3` timestamp NULL default NULL                                               
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8      

   `ts1` timestamp NOT NULL , => `ts1` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
                                       
这时更新的时候就会自动更新ts1字段了,不想要更新就创建的时候加各default
`ts2` timestamp NOT NULL default CURRENT_TIMESTAMP,

默认为空是 `ts3` timestamp NULL default NULL        而不是 `ts3` timestamp default NULL     

抱歉!评论已关闭.