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

typeorm not working with softdeleted records and unique constraint field

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

您可以尝试部分索引

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

Postgres: Partial Indexes