PostgreSQL根据日期设置表年龄

PostgreSQL根据日期设置表年龄

问题描述:

我遇到了我的postgreSQL数据库的问题。我有一个名字,出生日期和年龄的表格。PostgreSQL根据日期设置表年龄

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

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

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

,并有年龄自动成为21

我不知道如果我需要一个触发器来做到这一点,或者如果有什么东西我可以在DDL做。

请帮忙。 谢谢

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

该解决方案的缺点是,您需要每年更新表格 - 或者实际上每年都会更新一次该表格,并将该日期与出生日期一行,以使年龄列保持“至今”。

通常,存储可轻松从现有数据导出的信息(特别是如果计算起来便宜),不是一个好主意。

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

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

,将永远显示最新信息,而不需要不断更新的数据表。