我希望代码能够在插入新行时自动填充时间戳值,就像我在MySQL中使用CURRENT_TIMESTAMP
所做的那样。
如何在PostgreSQL中实现这一点?
CREATE TABLE users (
id serial not null,
firstname varchar(100),
middlename varchar(100),
lastname varchar(100),
email varchar(200),
timestamp timestamp
)
字符串
6条答案
按热度按时间ru9i0ody1#
要在插入期间填充列,请使用
DEFAULT
值:字符串
注意,该列的值可以通过在
INSERT
语句中提供一个值来显式地覆盖。如果你想防止这种情况,你确实需要一个trigger。如果需要在更新行时更新该列,则还需要触发器(如mentioned by E.J. Brennan)
请注意,对列名使用保留字通常不是一个好主意。
p8ekf7hl2#
您需要编写一个插入触发器,如果您希望在记录更改时更改更新触发器,则可能需要编写一个更新触发器。这篇文章很好地解释了这一点:
http://www.revsys.com/blog/2006/aug/04/automatically-updating-a-timestamp-column-in-postgresql/
字符串
像这样应用触发器:
型
gv8xihay3#
更新时间戳,仅当值更改时
基于E.J的链接并从该链接添加if语句(https://stackoverflow.com/a/3084254/1526023)
字符串
yrwegjxp4#
使用'now()'作为默认值会自动生成时间戳。
8fq7wneg5#
要在插入新行时自动更新PostgreSQL中的timestamp字段,您可以将
current_timestamp
设置为default
值:字符串
除此之外,您可能希望防止任何人在将来更新此字段,这可以通过创建更新触发器并应用它来完成:
的数据
lymgl2op6#
对于更新和Liquibase YAML:
字符串