H2 DB计算列 - 对表字段的引用

时间:2017-08-17 11:41:20

标签: sql h2

我想根据另一个表中的数据计算计算列。

示例:

ALTER TABLE table1
ADD avg_price DOUBLE AS (SELECT AVG(price)
                   FROM goods
                   WHERE id = ?); 

? - 对于计算行

应为table1.id
  • 如何引用table1中的列?
  • 如何在goods表添加或删除此ID的数据时更新id的值

编辑:抱歉,不是Postgres - H2

1 个答案:

答案 0 :(得分:1)

一种方法是使用视图:

CREATE VIEW v_table1
AS
SELECT *
FROM table1 t1,
LATERAL (SELECT AVG(price) AS avg_price
         FROM goods g
         WHERE g.id = t1.id) v1;

同样将价格存储为DOUBLE并不是最好的选择。更好地使用DECIMAL。来自Floating-Point Types

  

如果您需要精确的存储和计算(例如货币金额),请改用数字类型。