评估唯一性时忽略软删除条目的数据库约束
Database constraints to ignore soft-deleted entries when evaluating uniqueness
我有一个 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)
}
}
现在,这工作得很好,但是如果用户(软)删除他们的帐户并尝试再次使用相同的电子邮件地址注册,他们不能,因为电子邮件已被使用。
如何告诉 builder
在评估唯一性时忽略已删除条目中的值?
您实际上无法告诉 builder
忽略已删除条目中的值,因为构建器只是将本机 mysql/postgres 约束添加到您的 table。
添加新用户时,您必须手动执行此操作,例如查询完整的 table,包括已删除的条目,然后从那里开始。
我有一个 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)
}
}
现在,这工作得很好,但是如果用户(软)删除他们的帐户并尝试再次使用相同的电子邮件地址注册,他们不能,因为电子邮件已被使用。
如何告诉 builder
在评估唯一性时忽略已删除条目中的值?
您实际上无法告诉 builder
忽略已删除条目中的值,因为构建器只是将本机 mysql/postgres 约束添加到您的 table。
添加新用户时,您必须手动执行此操作,例如查询完整的 table,包括已删除的条目,然后从那里开始。