【发布时间】:2012-03-22 07:47:05
【问题描述】:
我希望代码能够在插入新行时自动更新时间戳,就像我在 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
)
【问题讨论】:
-
顺便说一下,你的
timestamp数据类型是由SQL规范定义为TIMESTAMP WITHOUT TIME ZONE的缩写。这几乎肯定不是你想要的,就像explained by Postgres expert David E. Wheeler。另一种类型,TIMESTAMP WITH TIME ZONE可能是您想要的,使用任何传递的时区偏移信息将日期时间调整为 UTC(但实际上并没有存储该时区信息,尽管类型名称)。 -
在重新学习了这一点之后,我写了一个detailed blog post,关于使用默认值、函数和触发器记录行的创建和修改的日期时间。包括用于 Postgres 的完整示例 SQL 和 PL/pgSQL 代码。
标签: database postgresql timestamp