MySQL - 独特但不是那么独特

标签 mysql unique-constraint

我有一个 VARCHAR 字段(在 MySQL 数据库的表中),我需要每个条目与整个集合的同一字段的任何其他行相比是唯一的。

但是,在我删除其中一个唯一字符串之后,我希望能够插入和更新该字段的其他记录,以便它们现在拥有这个以前使用过的唯一值。

问题是 Unique 约束似乎记住所有“已删除的唯一字符串”,它不允许我更新或添加以前使用过的字符串(但现在已删除)。

是否有另一个约束,我可以指定集合必须始终不同,但以前删除的唯一 VARCHARs 不受限制?

最佳答案

不,它不是那样工作的。

一旦您从表中删除了一个值,即使表上存在唯一约束,也可以再次插入该值。

一个潜在的问题是如果您使用软删除 - 即通过将 is_deleted 字段设置为 1 来将行标记为已删除。如果是这种情况,那么软删除值将是正确的防止唯一约束按预期工作。但这里似乎并非如此。

关于MySQL - 独特但不是那么独特,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11513865/

相关文章:

postgresql - 使用 MD5 在 Postgres 上使用 SQLAlchemy 创建唯一索引

php - MySql 获取产品搜索结果中的类别数

php - 检查数据库是否存在(MySQL),如果不存在,则在 PHP 中创建它

phpBB 和 mySQL "Could not connect to the database..."

java - 无法使私有(private)广播方法起作用

MySQL 和用户偏好的预定更新?

php - 违反完整性约束的自定义错误消息

python - 如何在Django中用 "SlugField()"增加 "unique=True"的大小?

sql - 触发错误时回滚事务

c# - NHibernate通过代码映射——复合唯一索引