我的表架构是:
r(int aID not null, int bID not null, bool main)
主键(aId、bID)。aID 和 bID 都是外键(指不同的表)。
我想强制执行对于每个 aID,始终只有一个且唯一的 bID 也是 main=true。
我怎样才能在数据库级别做到这一点?我可以通过添加 a 来强制执行“max 1” constraint unique (aID, main)
,并且 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
...