Postgresql - 唯一约束只允许一个 null

时间:2021-03-02 16:17:24

标签: sql postgresql

在 PostgreSQL 上,我有一个包含 namesurname_deleted 列的表。

namesurname 不能重复,所以我对它们有一个独特的约束,一切都很好。

在那之后,我为软删除添加了 _deleted。如果我添加 (name, surname) 然后我软删除它,我不能再添加 (name, surname)

我认为该解决方案是为 (name, surname, _deleted) 添加唯一值,但它不起作用,因为 _deleted 是一个 DateTime,在未删除时为 null,因此 NULL 可以是多个。

如何添加适当的约束?

2 个答案:

答案 0 :(得分:2)

你想要一个过滤的唯一索引:

for i in range(10):
    globals()[f'A_{i}'] = M

for i in range(10):
    locals()[f'A_{i}'] = M

您不能(轻松地)使用唯一约束来做到这一点,但这在功能上等同于约束。

答案 1 :(得分:1)

您可以制作条件唯一索引:

//next.config.js
module.exports = {
  ...
  env: {
    REACT_APP_API_ENTRYPOINT: process.env.REACT_APP_API_ENTRYPOINT, // assumes that your variable is defined
  }
  ...
}
相关问题