我目前正在研究一个简单的虚拟项目,以刷新我对SQL的了解并学习一些新知识:)
我有一个表Article
,其中的列为:
aID, price
我还有另一个表Storage
:
sID, aID, count
Storage
表引用aID
作为外键,而count列说明存储了多少文章。
现在,我想向value
表中添加列Storage
。此列应由Article.price * Storage.count
计算。
搜索网络后,我发现您可以计算出这样的列
CREATE TABLE tbl
(
int1 INT,
int2 INT,
product BIGINT GENERATED ALWAYS AS (int1 * int2) STORED
);
但是我还没有找到一个如何处理另一个表中的列的示例。
要在计算中使用引用的aID中的价格,我该怎么办?
答案 0 :(得分:3)
您不能基于其他表中的值定义生成的列。每个the documentation:
生成表达式可以引用表中的其他列,但不能引用其他生成的列。使用的任何函数和运算符都必须是不变的。不允许引用其他表。
您可以通过在两个表上创建两个触发器来实现预期的行为,但是通常基于表创建视图是一种更简单,更有效的解决方案。