评估唯一性时,数据库约束可忽略软删除的条目

时间:2019-05-21 21:57:24

标签: swift constraints vapor

我有一个User模型,用户可用来在我的Vapor(Swift)应用程序中创建帐户。
User实现了Migration协议,如下所示:

static func prepare(on conn: PostgreSQLConnection) -> Future<Void> {
    return Database.create(self, on: conn) { (builder) in
        try addProperties(to: builder)
        builder.unique(on: \.email)
    }
}

现在,这很好用,但是如果用户(soft-)删除帐户并尝试再次使用相同的电子邮件地址注册,则他们将无法使用,因为该电子邮件已被使用

在评估唯一性时,如何告诉builder忽略已删除条目中的值?

1 个答案:

答案 0 :(得分:2)

您实际上无法告诉builder忽略已删除条目中的值,因为构建器只是向表中添加了本地mysql / postgres约束。

添加新用户时,您将必须手动执行此操作,例如查询整个表,包括已删除的条目,然后从那里开始。