0

我的 postgreSQL 数据库遇到了问题。我有一张桌子,上面有名字、出生日期和年龄。

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

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

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

并自动将年龄设为 21。

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

请帮忙。谢谢

4

1 回答 1

3

您需要一个触发器来在插入期间计算它。

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

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

您可以根据以下选择创建一个动态返回信息的视图:

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

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

于 2013-05-08T23:55:52.320 回答