MySql表结构自动初始化的create

it2022-05-05  118

简述

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


最新回复(0)