我正在尝试使用PGadmin在postgresql中创建一个名为Citizens
的表,在这个表中有一个名为age
的列,我希望在插入新行时计算出这个年龄并将其放入这个列中。我的代码如下所示:
create table citizens(
first_name VARCHAR(40),
last_name VARCHAR(45),
birth_date DATETIME DEFAULT NOW(),
ssid BIGINT PRIMARY KEY,
age INTERVAL AGE(TIMESTAMP birth_date),
);
运行此查询时收到以下错误消息:
ERROR: syntax error at or near "AGE"
LINE 6: age INTERVAL AGE(TIMESTAMP birth_date),
^
SQL state: 42601
Character: 156
1条答案
按热度按时间tuwxkamq1#
你要找的是定义
不幸的是Postgres不支持 generated... virtual。你最好的选择是从表中删除列,然后创建一个派生该列的视图。
或者,更好的是,正如@ChrisMaurer的评论所说:
几个注意事项:
birth_date
默认值的糟糕选择。在这种情况下,将其定义为not null
而不使用默认值是更好的选择。不要假设新的citizens
只有几秒钟或几天的历史。有时候,处理异常比假设错误的数据(可能永远不会更新)更好。至少恕我直言。