具有外键引用的另一个 table 值的 PostgreSQL 计算列
PostgreSQL Calculated Column with values of another table referenced by foreign key
我目前正在做一个简单的虚拟项目,以更新我对 SQL 的知识并学习一些新东西:)
我有一个 table Article
列:
aID, price
我还有一个tableStorage
:
sID, aID, count
Storage
table 将 aID
引用为外键,计数列表示存储了多少篇文章。
现在我想在 Storage
table 中添加一列 value
。此列应按Article.price * Storage.count
.
计算
我在网上搜索后发现您可以像这样计算列
CREATE TABLE tbl
(
int1 INT,
int2 INT,
product BIGINT GENERATED ALWAYS AS (int1 * int2) STORED
);
但我还没有找到如何使用来自另一个 table 的列的示例。
我需要做什么才能在计算中使用引用的 aID 中的价格?
您不能根据其他表的值定义生成的列。每 the documentation:
The generation expression can refer to other columns in the table, but not other generated columns. Any functions and operators used must be immutable. References to other tables are not allowed.
您可以通过在两个表上创建两个触发器来实现预期的行为,但通常基于表创建视图是更简单、更有效的解决方案。
我目前正在做一个简单的虚拟项目,以更新我对 SQL 的知识并学习一些新东西:)
我有一个 table Article
列:
aID, price
我还有一个tableStorage
:
sID, aID, count
Storage
table 将 aID
引用为外键,计数列表示存储了多少篇文章。
现在我想在 Storage
table 中添加一列 value
。此列应按Article.price * Storage.count
.
我在网上搜索后发现您可以像这样计算列
CREATE TABLE tbl
(
int1 INT,
int2 INT,
product BIGINT GENERATED ALWAYS AS (int1 * int2) STORED
);
但我还没有找到如何使用来自另一个 table 的列的示例。
我需要做什么才能在计算中使用引用的 aID 中的价格?
您不能根据其他表的值定义生成的列。每 the documentation:
The generation expression can refer to other columns in the table, but not other generated columns. Any functions and operators used must be immutable. References to other tables are not allowed.
您可以通过在两个表上创建两个触发器来实现预期的行为,但通常基于表创建视图是更简单、更有效的解决方案。