typeorm 不适用于软删除记录和唯一约束字段

我正在尝试使用 typeorm softdelete 功能,为了删除它的罚款,向 deletedAt 字段添加时间戳,但是当您有像“用户名”这样的唯一字段并且您软删除它然后尝试添加具有相同“用户名”字段值的另一条记录时,问题就出现了作为删除记录。它不接受它,因为它已经插入一次并且数据库对软删除没有感知。所以我尝试添加另一个字段,使其成为结合“用户名”和“deletedAt”的复合唯一约束,在 Postgres 中似乎 Null 没有像我预期的那样被索引。因此,您可能再次为 deletedAt 添加具有相同“用户名”和相同“NULL”值的多条记录。试图通过将默认值 0 分配给 deletedAt 来绕过这一点,现在我假设主要问题是如何告诉 typeorm 对待 0 与在获取查询时对待 NULL 相同。

stack overflow typeorm not working with softdeleted records and unique constraint field
原文答案
author avatar

接受的答案

您可以尝试部分索引

CREATE UNIQUE INDEX ix_username ON usertable (username)
WHERE (deletedAt is null);

Postgres: Partial Indexes


答案: