我的 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/