MySql表结构自动初始化的create_time与自动更新的update_time

简述

  • 在表结构设计时,经常会设计两个字段:数据创建时间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
);

效果测试

MySql表结构自动初始化的create_time与自动更新的update_time_第1张图片

注意事项

create_timeupdate_time的数据类型为timestamp,可能需要做一些数据转换。

可以操控我的另一篇文章:MySql时间戳timestamp与长整形long的数据转换

你可能感兴趣的:(MySql)