为 MySQL 表添加 ctime 和 mtime

1. 序

以前在使用 Ruby on Rails 的时候,框架自动会为每张表增加 mtimectime 两个字段,最近在手动建 MySQL 表的时候对这两个字段做了一点研究。

2. 字段的初始化和更新方式

  1. TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP: 在创建新记录和修改现有记录的时候都对这个数据列刷新。
  2. TIMESTAMP DEFAULT CURRENT_TIMESTAMP 在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它。
  3. TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在创建新记录的时候把这个字段设置为 0,修改字段时更新。

当你给一个 timestamp 设置为 on update current_timestamp 的时候,其他的 timestamp 字段需要显式设定 default 值

3. 实例

CREATE TABLE if not exists mybatis.person(
  id BIGINT not null auto_increment PRIMARY KEY,
  name VARCHAR(20) NOT NULL DEFAULT '',
  phone VARCHAR(15) NOT NULL DEFAULT '',
  email VARCHAR(50) NOT NULL DEFAULT '',
  ctime TIMESTAMP DEFAULT '0000-00-00 00:00:00',
  mtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)ENGINE=innodb DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

发表评论

电子邮件地址不会被公开。 必填项已用*标注