MySQL:让表的时间字段在insert和update时自动更新

让字段自动更新为当前时间戳:

--insert时若不指定updated值,则插入当前时间
CREATE TABLE `test_update` (
  `id` int(32) NOT NULL,
  `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,  
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--insert时和update时若不指定updated值,则插入当前时间
CREATE TABLE `test_update` (
  `id` int(32) NOT NULL,
  `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--insert时若不指定updated值,则为NULL;update时若不指定updated值,则插入当前时间
CREATE TABLE `test_update` (
  `id` int(32) NOT NULL,
  `updated` timestamp NULL ON UPDATE CURRENT_TIMESTAMP, 
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

timestamp类型只用来存储创建时间和更新时间,因为可以自动更新,不需要程序里来处理。
一般的时间用varchar存储比较好处理。

添加一个新字段:

ALTER TABLE `toll_station` ADD COLUMN 
  `update_time` timestamp NOT NULL 
  DEFAULT CURRENT_TIMESTAMP 
  ON UPDATE CURRENT_TIMESTAMP 
  COMMENT '记录数据更新时间,自动更新,不要手动修改' 
AFTER `status`;

你可能感兴趣的:(MySQL)