我正在使用 ActsAsParanoid 软删除用户。删除(软)用户后,我的客户想要创建具有相同电子邮件 ID 的用户。但是由于电子邮件列是唯一的,所以它会生成唯一字段错误。所以我的问题是我们可以设置仅当 deleted_at 列为空时,email
列的唯一性。
如果你不明白我的问题,请回复。
最佳答案
我想您可以将 users
表的唯一性约束更改为:
UNIQUE (email, deletion_date)
这将有效地:
- 对于标准(未删除)用户,保证他们有唯一的电子邮件地址,因为他们的删除日期可能都是
NULL
。 - 对于已删除的用户,不对电子邮件地址做任何保证,因为他们都有唯一的删除日期。
- 对于新用户,允许他们使用已删除用户的电子邮件地址,因为新用户将有一个
NULL
删除日期,而已删除用户在那里有一个值。
关于mysql - 使用电子邮件创建新用户作为软删除用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6753161/