PostgreSQL 根据日期设置表年龄

标签 postgresql date triggers psql

我的 postgreSQL 数据库遇到了问题。我有一张包含姓名、出生日期和年龄的表格。

    CREATE TABLE guy
        (name       VARCHAR(10),
         dob        DATE,
         age        INTEGER,
         PRIMARY KEY (name)
         );

我想让它做的是当我插入一个新人时,我希望年龄自动成为年龄。

INSERT INTO guy VALUES ('Bill', '05-02-1992');

并让年龄自动为 21 岁。

我不知道我是否需要触发器来执行此操作,或者我是否可以在 DDL 中执行某些操作。

请帮忙。 谢谢

最佳答案

您需要一个触发器来计算插入时间。

该解决方案的缺点是您需要每年或每年更新表格 - 或者实际上一年中的每一天都有一行将该日期作为出生日期,以保持年龄列“最新” -日期”。

通常情况下,存储可以轻松从现有数据中导出的信息并不是一个好主意(尤其是在计算成本很低的情况下)。

您可以创建一个 View ,根据以下选择即时返回信息:

select name,
       dob,
       age(dob) as age
from guy;

这将始终显示最新信息,而无需更新表中的数据。

关于PostgreSQL 根据日期设置表年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16452016/

相关文章:

java - 在将字符串转换为日期期间定义您的月份

java - 无法从日期格式中仅获取日期?

mysql 触发器无法识别

Java Spring 应用程序数据库触发审计 - 如何提供做出更改的正确用户

database - Postgres 触发执行速度的差异?

database - Postmaster.pid 已经存在,说 PID 号正在目录中运行但没有进程?

java - org.postgresql.util.PSQLException : ERROR: invalid input syntax for type inet:

日期差异错误, "The expression is not complete"

php - 为什么 PDO for Postgres 返回 bool 字段的整数

postgresql - 如何选择所有行,其中包含元素数组的任何元素