【发布时间】:2016-11-21 18:16:21
【问题描述】:
我可以在表 A 中创建一个生成的列,将表 B 中的列与表 A 中行的 tableA_id 相加吗?
假设我有一张家庭表和一张儿童表。我想要每个家庭孩子的年龄总和。
ALTER TABLE people.families
ADD COLUMN sumofages DECIMAL(10,2) GENERATED ALWAYS AS
(SELECT SUM(age) FROM people.children WHERE family_id = people.families.id) STORED;
ERROR 3102: Expression of generated column 'sumofages' contains a disallowed function.
我也无法将其保存为 VIRTUAL 类型。我在这里做错了什么?
ALTER TABLE people.families
ADD COLUMN sumofages DECIMAL(10,2) GENERATED ALWAYS AS
(SELECT SUM(age) FROM people.children WHERE family_id = people.families.id) VIRTUAL;
ERROR 3102: Expression of generated column 'sumofages' contains a disallowed function.
我不知道禁止使用哪个功能。 SUM 似乎不是。也许选择?
【问题讨论】:
-
我认为 MySQL 不支持您尝试执行的操作。你会对
UPDATE声明感到满意吗? -
我目前使用子选择。我不想实际存储数据,我只是有过多的子选择,我无法从 MySQL 中找到明确的文档来表明它不受支持。在 MariaDB 中,文档表明它不受支持,并且生成的表达式只能包含当前行中的数据。我只是想确定我没有遗漏什么。
标签: mysql calculated-columns dynamically-generated generated