时间:2023-10-30来源:系统城装机大师作者:佚名
该文章讲解了创建时间及修改时间如何通过函数自动填充,并演示了以下几种方式实现列自动填充创建时间及修改时间:
- 创建表时设置字段为自动更新时间列。
- 添加新字段为自动更新时间列。
- 更新已有字段为自动更新时间列。
- 通过navicat设置字段为自动更新时间列。
CURRENT_TIMESTAMP
表示插入新行时,该列将自动设置为当前时间,create_time设置了默认值为CURRENT_TIMESTAMP
后,插入新数据就会在create_time字段中自动填充当前时间。
ON UPDATE CURRENT_TIMESTAMP
表示数据行更新时,该列将自动设置为当前时间,update_time设置了数据更新后就会在update_time字段中自动填充当前时间。
注意:这两个函数都可以传参数,传参可以传0-6的数字,表示时间的精度,比如
CURRENT_TIMESTAMP(3)
表示精确到毫秒值,在设置时函数与字段的时间精度要保持一致,否则会报错:ERROR 1067 (42000): Invalid default value for 'tmt'
。
MySQL 5.6.5
之后,TIMESTAMP
和DATETIME
列都支持自动更新,且一个表可设置多个自动更新列。
MySQL 5.6.5
之前,只有TIMESTAMP
支持自动更新,每个表只能有一个自动更新的时间列。
1 2 3 4 5 6 7 |
CREATE TABLE table_name ( id INT NOT NULL AUTO_INCREMENT, data VARCHAR (255) NOT NULL , create_time datetime DEFAULT CURRENT_TIMESTAMP , update_time datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP , PRIMARY KEY (id) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic ; |
1 2 3 |
ALTER TABLE `table_name` ADD COLUMN `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ; ADD COLUMN `update_time ` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间' ; |
1 2 3 |
ALTER TABLE `table_name` MODIFY COLUMN `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ; MODIFY COLUMN `update_time ` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间' ; |
选中列后在默认值写上CURRENT_TIMESTAMP
,默认值下面的选项意思是当前列是否要在数据行内容更新时更新当前列时间。
好处: 无需依赖业务更新时间,所有的db操作都会自动记录,便于排查问题。
不足: 数据库服务器和业务服务器可能存在时间差,导致业务变动的时间与数据库时间戳存在差异,给实际维护和使用带来障碍,只能尽可能的校准服务器时间,但不能绝对避免该问题。
2023-10-30
windows上的mysql服务突然消失提示10061 Unkonwn error问题及解决方案2023-10-30
MySQL非常重要的日志bin log详解2023-10-30
详解MySQL事务日志redo log一、单表查询 1、排序 2、聚合函数 3、分组 4、limit 二、SQL约束 1、主键约束 2、非空约束 3、唯一约束 4、外键约束 5、默认值 三、多表查询 1、内连接 1)隐式内连接: 2)显式内连接: 2、外连接 1)左外连接 2)右外连接 四...
2023-10-30
Mysql删除表重复数据 表里存在唯一主键 没有主键时删除重复数据 Mysql删除表中重复数据并保留一条 准备一张表 用的是mysql8 大家自行更改 创建表并添加四条相同的数据...
2023-10-30