使用外键引用另一张表的值来计算PostgreSQL的列

20

我目前正在进行一个简单的虚拟项目,以更新我的SQL知识并学习一些新东西 :)

我有一张名为Article的表格,其中包含以下列:

aID, price 

我有另一个表格Storage

sID, aID, count  

Storage 表引用 aID 作为外键,计数列表示存储的文章数量。

现在我想在我的 Storage 表中添加一个名为 value 的列。此列应通过 Article.price * Storage.count 计算而来。

我在网上搜索后发现可以使用这种方式创建计算列。

CREATE TABLE tbl 
(
     int1 INT,
     int2 INT,
     product BIGINT GENERATED ALWAYS AS (int1 * int2) STORED
);

但是我没有找到一个示例,如何使用另一张表中的列进行计算。

为了在计算中使用来自引用aID的价格,我需要做什么?

1个回答

25

您不能基于其他表的值定义生成列。根据文档:

生成表达式可以引用表中的其他列,但不能引用其他生成列。使用的任何函数和运算符必须是不可变的。不允许引用其他表。

您可以通过在两个表上创建两个触发器来实现预期的行为,但通常基于这些表创建视图是更简单和更有效的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接