如何强制在每个列的名称(在枚举中)每个列中只有一个`true`值?

问题描述 投票:0回答:1

我具有以下结构,在{ 'ready', 'set', 'go'}上具有枚举name

|----------------------|---------------------------|------------------------|
|          Id          |          enabled          |          name          |
|----------------------|---------------------------|------------------------|
|          1           |          true             |        'ready'         |
|----------------------|---------------------------|------------------------|
|          2           |          false            |        'ready'         |
|----------------------|---------------------------|------------------------|
|          3           |          false            |        'ready'         |
|----------------------|---------------------------|------------------------|
|          4           |          false            |        'set'           |
|----------------------|---------------------------|------------------------|
|          5           |          true             |        'set'           |
|----------------------|---------------------------|------------------------|
|          6           |          true             |        'go'            |
|----------------------|---------------------------|------------------------|
|          7           |          false            |        'go'            |
|----------------------|---------------------------|------------------------|

我如何对其施加约束,以使得永远只有3个true(一个位于ready上,一个位于set上,一个位于go上?]]

我具有以下结构,名称上带有枚举{'ready','set','go'}:| ---------------------- | --------------------------- | ---------------------- -| | ID |已启用...

sql postgresql constraints unique
1个回答
1
投票

您可以使用过滤后的唯一索引(或如Postgres所称的"partial indexes":]

© www.soinside.com 2019 - 2024. All rights reserved.