微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

解决方法

您可以尝试部分索引

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

Postgres: Partial Indexes

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。