• 售前

  • 售后

热门帖子
入门百科

PostgreSQL自动更新时间戳实例代码

[复制链接]
lishuixiu006 显示全部楼层 发表于 2022-1-9 03:58:37 |阅读模式 打印 上一主题 下一主题
目录


  • 什么是PostgreSQL时间戳数据范例?
  • 一、为什么
  • 二、如何做
  • 总结

什么是PostgreSQL时间戳数据范例?

在PostgreSQL中,下一个数据范例是 TIMESTAMP ,它可以存储 TIME 和 DATE 值。但它不支持任何 时区数据。这意味着当我们转换数据库服务器的 时区时, 时间戳值将存储在数据库中,并且不能重复修改。
在PostgreSQL中,TIMESTAMP数据范例分为 两种时间数据范例,如下:
       
  • timestamp   
  • timpstamptz
Timestamp: : 使用时间戳数据范例 ,不带时区。
Timestamptz: : timestamptz数据范例用于带有时区的 。
留意:
       
  • timestamptz数据范例是与时区干系的日期和时间数据范例,并且是具有时区的时间戳。   
  • 时间戳和时间戳存储时间戳值的 8字节存储,如以下命令所示:
  1. SELECT typname, typlen
  2. FROM pg_type
  3. WHERE typname ~ '^timestamp';
复制代码
迩来一段时间公司有一些入职的实习生在使用PostgreSQL创建表Schema时,对创建时间create_at和更新时间update_at字段自动更新时间戳不是很清楚。记载这篇文章,让后面来的实习生和新同事有一个参考。

一、为什么

在讲如何更新时间戳之前,我们照旧要相识为何有必要自动更新时间戳。对于许多业务表,我们大多数需要记载以下几个字段:
       
  • create_at 创建时间   
  • update_at 更新时间   
  • create_by 创建人   
  • update_by 更新人
为了给这些字段赋值,我们需要在repository层为entity赋值,创建时间和更新时间就取当前体系时间LocalDateTime,创建人和更新人需要用体系用户去赋值。对于创建时间和更新时间,这种与当前业务无关的字段,有没有可能不在repository上每次去手动赋值。
固然,肯定是有的,创建时间无非就是数据新插入行的时间,更新时间就是行数据更新的时间,明白了这一层的寄义,那就有办理办法了。
对于Mysql来说,其内部提供的函数对于创建时间和更新时间的字段的自动更新是相当容易的,但对于PostgreSQL事变会稍稍复杂一点。

二、如何做

要在插入数据的时候自动填充 create_at列的值,我们可以使用DEFAULT值,如下面所示。
  1. CREATE TABLE users (
  2.   ...
  3.   create_at timestamp(6) default current_timestamp
  4. )
复制代码
为create_at字段设置一个默认值current_timestamp当前时间戳,如许到达了通过在 INSERT 语句中提供值来显式地覆盖该列的值。
但上面的这种方式只是对于insert行数据的时候管用,假如对行更新的时候,我们需要使用到数据库的触发器trigger。
起首我们编写一个触发器update_modified_column如下面的代码所示,寄义是更新表的字段update_at为当前时间戳。
  1. CREATE OR REPLACE FUNCTION update_modified_column()
  2. RETURNS TRIGGER AS $$
  3. BEGIN
  4.     NEW.update_at = now();
  5.     RETURN NEW;
  6. END;
  7. $$ language 'plpgsql';
复制代码
然后我们应用这个触发器,如何应用呢?固然是为这个触发器设置触发条件。
  1. CREATE TRIGGER update_table_name_update_at BEFORE UPDATE ON table_name FOR EACH ROW EXECUTE PROCEDURE  update_modified_column();
复制代码
即代表的寄义是更新表table_name行数据的时候,执行这个触发器,我们需要为每一个表设置应用这个触发器!至此,到达目的。

总结

到此这篇关于PostgreSQL自动更新时间戳的文章就介绍到这了,更多干系PostgreSQL自动更新时间戳内容请搜索草根技术分享以前的文章或继续浏览下面的干系文章盼望各人以后多多支持草根技术分享!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作