在INSERT期间计算列值

时间:2011-05-20 15:13:25

标签: postgresql calculated-columns

我正在使用Postgresql 8.3

我有一个数据库表,其中包含 buy_value sell_value 。我希望添加一个DEFAULT函数,以便在每个插入时,数据库将根据买入和卖出值计算利润并将其插入相关列...

我该如何定义我的改变?

2 个答案:

答案 0 :(得分:5)

它不像更改DEFAULT值那么简单......在插入之前你需要一个触发器。 (但不建议将计算字段存储在表中,因为您有破坏数据完整性的风险)

检查出来

http://www.postgresql.org/docs/9.1/static/triggers.html

祝你好运

答案 1 :(得分:4)

我真的不能想到在postgres中存储这样的计算列的充分理由。

在写入和读取的速度方面 - 额外的I / O会产生性能损失,这很难被证明是合理的(可能在大多数CPU绑定系统中,但即便如此,对于这种微不足道的操作也没有意义)。

通常存储计算列是创建索引所必需的,但postgres具有functional indexes,因此您可以创建索引而不使用具体化列,并且出于其余目的使用视图。