微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 MySQL 中嵌入外键计算?

如何解决如何在 MySQL 中嵌入外键计算?

我在 MariaDB 中创建了两个表,其中一个一个用于计算外键的列。脚本的简化版本遵循以下格式:

CREATE TABLE a {
pk     INT     PRIMARY KEY,value  INT
}
CREATE TABLE b {
pk     INT     PRIMARY KEY,value  INT,calc   INT,CONSTRAINT fk
  FOREIGN KEY (value)
  REFERENCES a (value)
}

事实证明'calc'总是等于'value'+1。查询 'b' 时,从不引用 b.value,但经常引用 b.calc。 我应该删除“calc”以保持第三范式,还是有办法删除 b.calc 对 b.value 的依赖?类似的东西:

CREATE TABLE b {
pk     INT     PRIMARY KEY,CONSTRAINT fk
  FOREIGN KEY (calc)
  REFERENCES a (value+1)
}

感谢您的帮助。

解决方法

外键必须具有引用列的实际值。

您可以使用虚拟(AKA 生成)列来创建计算列。

CREATE TABLE b (
    pk INT PRIMARY KEY,value INT,calc GENERATED ALWAYS AS value + 1,FOREIGN KEY (value) REFERENCES a (value)
);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。