我有一个 VARCHAR
字段(在 MySQL 数据库的表中),我需要每个条目与整个集合的同一字段的任何其他行相比是唯一的。
但是,在我删除其中一个唯一字符串之后,我希望能够插入和更新该字段的其他记录,以便它们现在拥有这个以前使用过的唯一值。
问题是 Unique 约束似乎记住所有“已删除的唯一字符串”,它不允许我更新或添加以前使用过的字符串(但现在已删除)。
是否有另一个约束,我可以指定集合必须始终不同,但以前删除的唯一 VARCHARs
不受限制?
最佳答案
不,它不是那样工作的。
一旦您从表中删除了一个值,即使表上存在唯一约束,也可以再次插入该值。
一个潜在的问题是如果您使用软删除 - 即通过将 is_deleted
字段设置为 1 来将行标记为已删除。如果是这种情况,那么软删除值将是正确的防止唯一约束按预期工作。但这里似乎并非如此。
关于MySQL - 独特但不是那么独特,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11513865/