gpt4 book ai didi

sql - 如何对表施加约束以确保表子集中只有一个 bool 列为真?

转载 作者:搜寻专家 更新时间:2023-10-30 22:09:49 24 4
gpt4 key购买 nike

我想知道如何将特定的 bool 列限制为仅对表中的特定行子集为真。

在下面的示例中,元组 (id2, 1d3) 具有相同值的行在默认列中应该只有一个为真:

$> SELECT * FROM records WHERE id2 = 2 AND id3 = 3;
$> id | id2 | id3 | name | default
------+-------+-------+--------+---------
1 | 2 | 3 | bob | false
2 | 2 | 3 | jane | false
3 | 2 | 3 | jim | false
4 | 2 | 3 | cory | true
5 | 2 | 3 | alan | false


$> SELECT * FROM records WHERE id2 = 4 AND id3 = 5;
$> id | id2 | id3 | name | default
------+-------+-------+--------+---------
6 | 4 | 5 | bill | false
7 | 4 | 5 | fred | false
8 | 4 | 5 | frank | false
9 | 4 | 5 | dave | true
10 | 4 | 5 | ryan | false

最佳答案

您可以使用部分唯一索引来做到这一点:

create unique index on records (id2, id3) where "default";

请注意,default 是一个保留字,因此对于列名来说是一个非常糟糕的选择。

关于sql - 如何对表施加约束以确保表子集中只有一个 bool 列为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34167663/

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