PostgreSQL使用来自不同表列的自动计算列创建表

时间:2018-06-01 14:07:00

标签: sql postgresql

拥有以下表格,并希望创建表格fee,其中列product_price.price + product_sale.b_rate计算为comm product_price.price - product_sale.s_rate计算的是card

当表product_saleproduct_price填充时,有没有办法自动填充表card

例如使用计算列或函数创建表product_sale +---------+-------------+----+ | column | type | pk | +---------+-------------+----+ | s_date | date | Y | | seller | varchar(50) | Y | | country | varchar(50) | Y | | b_rate | float | | | s_rate | float | | +---------+-------------+----+ product_price +---------+-------------+----+ | column | type | pk | +---------+-------------+----+ | p_date | date | Y | | product | varchar(50) | Y | | price | varchar(50) | | +---------+-------------+----+ card +---------+-------------+----+ | column | type | pk | +---------+-------------+----+ | c_date | date | Y | | seller | varchar(50) | Y | | country | varchar(50) | Y | | fee | float | | | comm | float | | +---------+-------------+----+

需要帮助

{{1}}

1 个答案:

答案 0 :(得分:0)

你可以拥有"伪"虚拟列,而不是真正的真实列。 PostgreSQL可以将虚拟列模拟为表上的函数(不是持久化的),但是,有几个限制:

  • 虚拟列只能依赖于同一表和/或通用数据库函数的同一行上的值,而不依赖于其他表的其他行。

  • 在select上使用*时,不会自动列出它们。请参阅Emulating Virtual Columns

  • 无法将其编入索引。这意味着,如果你想通过它们进行搜索,那么搜索就不是最佳的了。

现在,我猜第一个项目对您来说是一个交易破坏者。这不是你需要的。

我已经好几次成功使用过这个技巧了。