本文主要介绍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