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)

相关推荐

  • 什么是Capsulecorp-Pentest

    技术什么是Capsulecorp-Pentest本篇内容主要讲解“什么是Capsulecorp-Pentest”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是Capsul

    攻略 2021年10月29日
  • 桑巴CVE-2018-1050和CVE-2018-1057指的是什么?

    技术Samba CVE-2018-1050和CVE-2018-1057指的是什么这篇文章将为大家详细讲解有关Samba CVE-2018-1050和CVE-2018-1057指的是什么,文章内容质量较高,因此小编分享给大

    攻略 2021年12月20日
  • 苹果手机如何删除通讯录联系人,苹果id怎么删除电话号码

    技术苹果手机如何删除通讯录联系人,苹果id怎么删除电话号码苹果手机删除电话号方法苹果手机如何删除通讯录联系人: 以iPhone8手机为例,删除“联系人”(电话号码)有如下操作: 一、在手机桌面打开“电话”。
    二、打开“

    生活 2021年10月22日
  • 绩麻的读音,昼出耘田夜绩麻全首诗什么意思

    技术绩麻的读音,昼出耘田夜绩麻全首诗什么意思首句“昼出耘田夜绩麻”是说:白天下田去除草,晚上搓麻线绩麻的读音。“耘田”即除草。初夏,水稻田里秧苗需要除草了。这是男人们干的活。“绩麻”是指妇女们在白天干完别的活后,晚上就搓

    生活 2021年10月25日
  • 体育模拟

    技术体育模拟 体育模拟import randomdef printInfo(): print("模拟体育竞技") print("学号后两位:26,曾俊谌")
    def getInputs():

    礼包 2021年11月14日
  • 怎样浅谈Java Servlets与CGI程序

    技术怎样浅谈Java Servlets与CGI程序怎样浅谈Java Servlets与CGI程序,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。从网络的早期阶

    攻略 2021年11月20日