简述
在表结构设计时,经常会设计两个字段:数据创建时间create_time与数据更新时间update_time。
但是在后期开发中,往往因为各种原因,导致忘了初始化create_time或者更新update_time。
本文的目的是通过MySql的以下机制完成create_time的自动初始化与update_time的自动更新:
DEFAULT:默认值机制。CURRENT_TIMESTAMP:MySql内置函数,用于获取当前时间戳。ON UPDATE:当数据成功更新时。
创建表结构时
CREATE TABLE `t_temp
` (
`id
` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`comment` varchar(10) NOT NULL DEFAULT '' COMMENT '备注',
`create_time
` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time
` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id
`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4
;
修改表结构时
ALTER TABLE `t_temp
` ADD COLUMN (
`create_time
` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time
` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
效果测试
注意事项
create_time和update_time的数据类型为timestamp,可能需要做一些数据转换。
可以操控我的另一篇文章:MySql时间戳timestamp与长整形long的数据转换