MySQL ON UPDATE CURRENT_TIMESTAMP的使用

结论

MySQL中,有某个时间字段(如update_time):
①、当该字段类型设置为timestamp时,如果其默认值赋值为CURRENT_TIMESTAMP,那么插入一条记录时,该字段的值会自动设置为系统当前时间;
②、如果设置或在navicat可视化GUI中勾选了 “ON UPDATE CURRENT_TIMESTAMP”字段属性时,则时间字段会随着update命令进行实时更新。即当数据表的其他字段发生变化时,该时间字段自动更新为最新的时间。

实验

初始化测试表person:

CREATE TABLE `person` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

通过navicat查看person表:
在这里插入图片描述
初始值为:
在这里插入图片描述
实验①、为update_time添加 ON UPDATE CURRENT_TIMESTAMP 支持

ALTER TABLE person MODIFY COLUMN `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间';

update `person` set name='ShangHai' where id=1;

在这里插入图片描述
可以看到,update_time字段均因为name的修改而被更新。

实验②、继续为create_time添加 ON UPDATE CURRENT_TIMESTAMP 支持

ALTER TABLE person MODIFY COLUMN `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间';


update `person` set name='BeiJing' where id=2;

在这里插入图片描述
可以看到,2个时间字段均因为name的修改而被更新。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值