PostgreSQL之时间戳自动更新
PostgreSQL之时间戳自动更新
问题描述
PostgreSQL执行Insert语句时,自动填入时间的功能可以在创建表时实现,但更新表时时间戳不会自动自动更新。
在mysql中可以在创建表时定义自动更新字段,比如 :
create table ab (
id int,
age int,
changetimestamp timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
);
那PostgreSQL中怎么操作呢?
解决方案
1,通过内置的插件包moddatetime实现
create extension moddatetime;
drop table if exists t1;
create table t1 (
id serial not null primary key,
age int,
create_time timestamp(0) without time zone default now()::timestamp(0) without time zone,
update_time timestamp(0) without time zone
);
-- 自动将update_time字段更新为最新时间
CREATE TRIGGER update_timestamp
BEFORE UPDATE ON t1
FOR EACH ROW
EXECUTE PROCEDURE moddatetime (update_time);
--测试
insert into t1 (age) values (1),(2),(3);
update t1 set age=4 where id = 1;
update t1 set age=5 where id = 2;
update t1 set age=6 where id = 3;
select * from t1;
id | age | create_time | update_time
----+-----+---------------------+----------------------------
1 | 4 | 2019-11-05 12:00:50 | 2019-11-05 12:00:50.048446
2 | 5 | 2019-11-05 12:00:50 | 2019-11-05 12:00:50.050179
3 | 6 | 2019-11-05 12:00:50 | 2019-11-05 12:00:50.05179
方案2,触发器实现
drop table if exists t1;
create table t1 (
id serial not null primary key,
age int,
create_time timestamp(0) without time zone default now()::timestamp(0) without time zone,
update_time timestamp(0) without time zone
);
create or replace function update_timestamp() returns trigger as
$$
begin
new.update_time = current_timestamp;
return new;
end
$$
language plpgsql;
create trigger t_update_time before update on t1 for each row execute procedure update_timestamp();
测试
-- 自动将update_time字段更新为最新时间
CREATE TRIGGER update_timestamp
BEFORE UPDATE ON t1
FOR EACH ROW
EXECUTE PROCEDURE moddatetime (update_time);
--测试
insert into t1 (age) values (1),(2),(3);
update t1 set age=4 where id = 1;
update t1 set age=5 where id = 2;
update t1 set age=6 where id = 3;
select * from t1;
id | age | create_time | update_time
----+-----+---------------------+---------------------
1 | 4 | 2019-11-05 12:04:42 | 2019-11-05 12:04:42
2 | 5 | 2019-11-05 12:04:42 | 2019-11-05 12:04:42
3 | 6 | 2019-11-05 12:04:42 | 2019-11-05 12:04:42
(3 rows)
各种数据库迁移到PostgreSQL及PG维保、商业培训、紧急救援及其他服务,请扫码联系。
PostgreSQL之时间戳自动更新相关推荐
- php更新数据库时间戳,关于Thinkphp5 里面数据库自动更新与创建时间的问题
我们有时候往数据库里面写入新的一条数据 时,可能需要自动更新时间.自动创建时间.这样就可以方便我们.从而大大减小我们的代码量: 不过在TP5里面有一个小规律,就是save()与insert()语句的区 ...
- MySQL自动更新当前时间戳
1. 问题 碰到一个奇怪的问题,一个业务表当更新了其中几行后,这几行对应的列created_at(DATETIME)自动更新为当前时间. 2. 排查 第一感觉想到触发器,排查表并未有触发器. 打开表设 ...
- mysql更新时间戳_MySQL timestamp自动更新时间分享
通常表中会有一个Create date 创建日期的字段,其它数据库均有默认值的选项.MySQL也有默认值timestamp,但在MySQL中,不仅是插入就算是修改也会更新timestamp的值! 这样 ...
- mysql timestamp 转型_MySQL的timestamp类型自动更新问题【转】
今天建了一个表,里面有一个列是timestamp类型,我本意是在数据更新时,这个字段的时间能自动更新.岂知对这个类型的值还不甚了解,导致出错.发现这个字段只是在这行数据建立的时候有值,在更新的却无变化 ...
- mysql timestamp 自动更新_mysql timestamp自动更新
最近遇到timestamp的自动更新时间问题,记录如下: 先看mysql官方手册(翻译稿): 在CREATE TABLE语句中,可以用下面的任何一种方式声明第1个TIMESTAMP列: 1.用DEFA ...
- MySQL的timestamp类型自动更新问题
今天建了一个表,里面有一个列是timestamp类型,我本意是在数据更新时,这个字段的时间能自动更新.岂知对这个类型的值还不甚了解,导致出错.发现这个字段只是在这行数据建立的时候有值,在更新的却无变化 ...
- postgresql 重启记录_PostgreSQL 高可用:PostgreSQL复制和自动故障转移
原文:PostgreSQL Replication and Automatic Failover Tutorial[1] 作者:Abbas Butt 翻译整理:alitrack 1.什么是 Postg ...
- html时间框自动更新,原生javascript实现自动更新的时间日期
能够动态变化的事物总比静态的更能够吸引人,甚至更有实用效果,比如能够自动变化的时间日期效果就是如此,下面就通过代码实例介绍一下如何实现此效果,代码实例如下: 一.具体代码 脚本之家 var t = n ...
- html日期自动更新,原生javascript实现自动更新的时间日期_javascript技巧
能够动态变化的事物总比静态的更能够吸引人,甚至更有实用效果,比如能够自动变化的时间日期效果就是如此,下面就通过代码实例介绍一下如何实现此效果,代码实例如下: 一.具体代码 脚本之家 以上代码实现了我们 ...
最新文章
- Possible MySQL server UUID duplication for server
- php 7月世界排名2017,TIOBE2017榜单公布,PHP还会是世界上最好的语言吗?
- 驱动程序实例(四):按键驱动程序(platform + input子系统 + 外部中断方式)
- python量化数据处理小细节2
- mysql 执行计划 视频_MySQL执行计划的讲解
- Mysql:日志管理:错误日志
- c# timer 销毁_C# task和timer实现定时操作
- cortex a7 a53_最美轿跑之一的奥迪A7,究竟有何魅力令人一眼定心
- BZOJ1123: [POI2008]BLO
- 学好英语网html首页制作,首页英语
- c语言编程温度转换源,c语言编程,将华氏温度转换成摄氏温度。转换公式为:c=5/9 * (f-32),其中f代表华氏温度...
- 南师大GIS考研数据库2013年第四题
- Kubernetes Deployment故障排除图解指南
- 蓝牙、红外线与wifi 区别以及不同频段无线电磁波的穿墙和绕过障碍物能力
- c语言实践输出某个区间中不是3的倍数的偶数
- 0033__PDM,全称为 Persepolis Download Manager
- 首款国产8K 50P小型化广播级摄像机惊喜亮相冬季冰雪体育盛会
- IllegalStateException: Errors/BindingResult argument declared without preceding model attribute. Che
- 【Python】python 程序示例
- Pycharm中 No module ‘自定义模块‘ 的问题(mmrotate)
热门文章
- xlsx.core.min.js读取excel文件数据(无乱码,测试通过)
- 将计算机与局域网互连学,局域网互连
- 2022广东春运指南:让回家的路更顺畅一些
- C、C++、Java、JavaScript、PHP、Python和Ruby,主要有什么区别?
- 社群管理工具以及新媒体运营工具清单,记得收藏!
- VS Code打开vue文件出现很多黄色波浪线的解决办法(ESlint插件引起)
- 【Vijos P1052】 贾老二算算术 高斯消元傻题
- (附源码)计算机毕业设计SSM流浪猫狗救助站
- 为什么会出现“烫烫烫”和“屯屯屯”?
- 烫烫烫”和“屯屯屯”