11

我目前正在做一个简单的虚拟项目,以刷新我对 SQL 的了解并学习一些新东西:)

我有一个Article包含列的表:

aID, price 

我还有一张桌子Storage

sID, aID, count  

Storage表将 引用aID为外键,计数列表示存储了多少文章。

现在我想在value我的Storage表中添加一列。此栏应按 计算Article.price * Storage.count

我在网上搜索后发现你可以有这样的计算列

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

但是我还没有找到一个如何使用另一个表中的列的示例。

为了在计算中使用引用的 aID 中的价格,我必须做什么?

4

1 回答 1

15

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

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

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

于 2019-11-08T19:50:40.647 回答