1. 序
以前在使用 Ruby on Rails
的时候,框架自动会为每张表增加 mtime
和 ctime
两个字段,最近在手动建 MySQL 表的时候对这两个字段做了一点研究。
2. 字段的初始化和更新方式
TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
: 在创建新记录和修改现有记录的时候都对这个数据列刷新。TIMESTAMP DEFAULT CURRENT_TIMESTAMP
在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它。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;