0

是否可以强制执行唯一值以及 postgres 中的唯一列?我正在使用第 11 版。它会是这样的:

状态 = 0 | 商店 = 5

唯一(商店,状态 = 0)

这样,我可以为 store 设置任何值,但是对于每个值,它只能有一个状态为 0 的记录,其余的可以是任何值?我确信这个问题之前已经被问过,但它似乎特定于某些框架,如 django:

如何强制执行条件唯一性约束

或者我只是找不到正确的答案。

我正在使用 loopback4,似乎没有办法在框架中指定它,所以我想在数据库中指定它。更新:为了更加解释:我有一个用户只能拥有一个带有商店的购物车,不能超过一个。每个购物车都有一个 user_id、store_id 和 status。当状态为0时,购物车在进行中,当状态为1时,购物车已订购,当状态为2时,由商店发货。所以我有一张桌子:

id | user_id | store_id | status
...|   1     |   1      | 0
...|   1     |   1      | 1
...|   1     |   1      | 1

以上,很好,应该被允许,但是:

id | user_id | store_id | status
...|   1     |   1      | 0
...|   1     |   1      | 0   <--- Not allowed
...|   1     |   1      | 1

这是不允许的,因为一个用途有多个商店的购物车。所以 status = 0 和 store_id 应该是唯一的。

4

1 回答 1

1

您可以创建部分唯一索引:

create unique index on the_table (store)
where status = 0;
于 2019-11-12T20:06:37.680 回答