【发布时间】:2012-04-04 22:00:43
【问题描述】:
我的表架构是:
r(int aID not null, int bID not null, bool main)
主键(aId、bID)。 aID 和 bID 都是外键(指不同的表)。
我想强制规定,对于每个 aID,始终只有一个 bID 也是 main=true。
如何在数据库级别做到这一点?
我可以通过添加constraint unique (aID, main) 来强制执行“max 1”,并且 main 为 true 或 NULL。
“至少 1”部分呢?
PS:在 MySQL 上工作。
编辑:用于澄清的示例数据: 您可以拥有 aID 和 bID 的各种组合,但对于每个 aID,只有一个组合还应具有 main=true。 演示数据:
1, 2, true
1, 3, NULL
1, 4, NULL
1, 5, true <- wrong, only one main=true
...
【问题讨论】:
标签: mysql constraints conditional-statements minimum