PostgreSQL如何实现自动更新时间戳

技术PostgreSQL如何实现自动更新时间戳这篇文章主要介绍PostgreSQL如何实现自动更新时间戳,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是PostgreSQL时间戳数据类型?在P

本文主要介绍PostgreSQL如何自动更新时间戳,非常详细,有一定的参考价值。感兴趣的朋友一定要看完!

00-1010在PostgreSQL中,下一个数据类型是TIMESTAMP,它可以存储TIME和DATE值。但是它不支持任何时区数据。这意味着当我们转换数据库服务器的时区时,时间戳值将存储在数据库中,不能重复修改。

在PostgreSQL中,时间戳数据类型分为两种时间数据类型,如:

时间戳

timpstamptz

Timestamp:使用不带时区的时间戳数据类型。

Timeptz : 3360 Timeptz数据类型用于时区。

注意:

Timeptz数据类型是与时区相关的日期和时间数据类型,它是一个带有时区的timestamptz。

和时间戳,如下面的命令:所示。

选择名称,类型

FROMpg_type

wheretypname~'^timestamp';最近公司有些新实习生在使用PostgreSQL创建表Schema时,对创建时间create_at和更新时间update_at这两个字段的自动更新时间戳不是很清楚。把这篇文章记录下来,以便以后来的实习生和新同事有个参考。

00-1010在谈论如何更新时间戳之前,我们仍然需要知道为什么需要自动更新时间戳。对于许多业务表,我们大多数人需要记录以下字段:

创建时创建

更新时更新

创建者创建

更新程序更新

为了给这些字段赋值,我们需要给存储库层的实体赋值,创建时间和更新时间取当前系统时间LocalDateTime,创建者和更新者需要由系统用户赋值。对于创建时间和更新时间,是否可以不每次都手动为存储库中与当前业务无关的字段赋值?

当然,肯定有。创建时间只不过是数据新插入行的时间,更新时间是行数据更新的时间。如果你理解了这一层的含义,就有了解决办法。

对于Mysql来说,内部提供的函数很容易自动更新创建时间和更新时间的字段,但是对于PostgreSQL来说,就有点复杂了。

什么是PostgreSQL时间戳数据类型?

要在插入数据时自动填充create_at列的值,我们可以使用DEFAULT值,如下所示。

CREATETABLEusers(

.

create _ attimestamp(6)default current _ timestamp

)为create_at字段设置一个默认值current_timestamp,以便通过在INSERT语句中提供一个值来显式覆盖此列的值。

但是,上述方法仅在插入行数据时有用。如果行被更新,我们需要使用数据库的触发器。

首先,我们编写一个触发器update_modified_column,如下面的代码所示,这意味着更新表的字段update_at是当前时间戳。

creatorreplaceffectionupdate _ modified _ column()

RETURNSTRIGGERAS$$

开始

new . update _ at=now();

RETURNNEW

END

$ $ language 'plpgsql然后我们应用这个触发器。怎么做?当然,设置这个触发器的触发条件。

CREATETRIGGERupdate _ table _ name _ update _ atbeforeupdatecontable _ name foreachrowexecuteproepdatedate _ modified _ column();也就是说,在更新table_name行的数据时,执行这个触发器,我们需要对每个表设置应用这个触发器!至此,达到目的。

以上就是文章“PostgreSQL如何自动更新时间戳”的全部内容。感谢您的阅读!希望分享的内容对大家有所帮助。更多相关知识,请关注行业资讯频道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/115595.html

(0)

相关推荐

  • 抖音刷粉苹果版,抖音增粉技巧是什么?

    技术抖音刷粉苹果版,抖音增粉技巧是什么?抖音热卖增粉并非那么简单,只有做好配料,不断出粉才能保证质量。本人见过特别牛的着作,一两天内受欢迎增粉上百万,而抖音上绝大多数客户整体实力一般,粉丝增长也特别慢,可以说成积少成多。

    测评 2021年10月19日
  • 国际象棋怎么玩,磁石国际象棋磁性折叠怎么玩儿

    技术国际象棋怎么玩,磁石国际象棋磁性折叠怎么玩儿棋子和棋盘国际象棋由黑白两棋组成国际象棋怎么玩,执白先行,国际象棋的对局目的是把对方的国王将死。以下三点如果全行不通,国王就算将死:
    1.挡住“将军”的局势
    2.离开“将军

    生活 2021年10月23日
  • 应该如何选择虚拟主机

    技术应该如何选择虚拟主机这篇文章主要为大家展示了“应该如何选择虚拟主机”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“应该如何选择虚拟主机”这篇文章吧。虚拟主机是在网络服务器上

    攻略 2021年11月1日
  • Window下如何安装Kerberos客户端及浏览器配置

    技术Window下如何安装Kerberos客户端及浏览器配置小编给大家分享一下Window下如何安装Kerberos客户端及浏览器配置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后

    攻略 2021年11月19日
  • VS如何部署代码同步信息

    技术VS如何部署代码同步信息这篇文章主要为大家展示了“VS如何部署代码同步信息”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VS如何部署代码同步信息”这篇文章吧。使分布式系统

    攻略 2021年12月1日
  • 怎么用C语言与java实现kafka avro生产者和消费者

    技术怎么用C语言与java实现kafka avro生产者和消费者本篇内容介绍了“怎么用C语言与java实现kafka avro生产者和消费者”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带

    攻略 2021年11月15日