gpt4 book ai didi

MySQL 将约束表示为计算列?

转载 作者:行者123 更新时间:2023-11-29 06:13:57 27 4
gpt4 key购买 nike

Columns: id INT, provice_id INT, is_province BIT
Foreign key: province_id references City (id)

我想表达这样一个概念:当id == Province_id时,is_province == 1。我该如何表达这一点?也许有计算列或其他约束?

编辑:好的,这么多评论,我将解释为什么有 is_province 属性。我知道这是多余的,但该表将容纳大约 8000 个条目,因此空间浪费根本不重要。我添加 is_province 因为(使用 DOctrine2)我可以更轻松地查询省份:

$provinces->findByIsProvince(true)

是的,我将省份和城市混合在一个表中,因为省份实际上是一个城市,并且共享它的所有属性。

所以我的问题仍然是,如何强制执行约束 if (id == Province_id) then is_province == 1

最佳答案

如果额外将其存储在表中,该信息将是多余的。它是 View 的完美候选者。

CREATE TABLE my_tbl(id INT, provice_id INT);

CREATE VIEW my_view AS
SELECT id, provice_id, (id = province_id) AS is_province
FROM my_tbl;

这为您提供了 is_provinceTRUE/FALSE。如果您想要 1/0,则替换为:

CASE WHEN id = province_id THEN 1 ELSE 0 END AS is_province

有关如何创建 View 的更多信息,请参阅 manual .

关于MySQL 将约束表示为计算列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7694182/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com