博主辛苦了,我要打赏银两给博主,犒劳犒劳站长。
【摘要】在数据表中有两个非常必备的字段:创建时间(create_time)和上次更新时间(update_time),我们可以完全通过设置字段属性来实现对这两个字段自动写入和修改,主要用到的就是 on update current_timestamp 属性。
先从一个建表语句来看:
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
create_time 字段是创建时间,即当执行了 insert 语句时,则该字段若未设置任何值的时候,默认会插入当前时间;同理,update_time 字段是记录的更新时间,当成功执行了 update 语句时,该字段会被修改成更新时间。
以下是基于上面建表语句来做的 sql 测试语句:
# create_time 的时间即是 insert 的时间,执行 update 的时不会被修改;
# 执行 insert 时 update_time 默认也为当前的时间
INSERT INTO `test`(name) VALUES("mafutian");
INSERT INTO `test`(name) VALUES("mafutian");
# name 的值未修改,则 update 失败,update_time 不被修改
UPDATE `test` SET name = "mafutian" WHERE id = 1;
# name 的值成功修改,则 update 执行成功,update_time 会被修改
UPDATE `test` SET name = "马富天" WHERE id = 2;
即记住若是设置默认值为插入时间则是:create_time timestamp default current_timestamp;
若是需要在记录被成功修改时则字段属性设置为:update_time timestamp default current_timestamp on update current_timestamp。
最后需要补充一点的是,不必担心设置默认插入和更新时间中 mysql 数据库时区问题,因为 mysql 的默认时区是系统的时区,即若系统是北京时间,则自动会插入东八区的时间(PRC)。
版权归 马富天个人博客 所有
本文标题:《on update current_timestamp 在执行 update 是自动修改更新时间》
本文链接地址:http://www.mafutian.com/419.html
转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^
顶0
踩0
第 2 楼 Justin 2019-05-06 16:07:58 暂无分享
第 1 楼 头条 2019-04-28 00:01:53 暂无分享
评论审核未开启 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
||