一、唯一索引有什么用

唯一索引在数据库中的作用是,确保指定字段或字段组合的数值或文本值是唯一的,不允许重复存在的

二、创建唯一索引

CREATE UNIQUE INDEX index_name ON table_name(column_name);

三、唯一索引为什么能有此作用

唯一索引能够保证数据的唯一性和不重复,主要是因为唯一索引在数据库中创建了一个约束,要求索引所涉及的字段或字段组合中的数值或文本值必须是唯一的。

当在数据库表中创建唯一索引后,数据库会在插入或更新数据时检查索引字段的数值或文本值是否已经存在,如果存在重复值,则会阻止数据的插入或更新,从而确保数据的唯一性。

这种约束机制有效地防止了重复数据的出现,提高了数据的完整性和准确性。

四、什么叫“如果存在重复值,则阻止数据的插入或更新”

存在重复值指的是在数据库表的唯一索引字段或字段组合中已经存在相同的数值或文本值。

当尝试向数据库插入或更新数据时,如果要插入或更新的数值或文本值与唯一索引中已有的数值或文本值重复,数据库系统会检测到这种重复情况,并根据唯一索引的约束规则,阻止重复数值或文本值的插入或更新操作。

这样可以确保数据在指定字段上的唯一性,避免数据重复和维护数据的准确性。

五、那么接下来这种场景,该如何应对

场景:
消息1 修改积分值为10,成功,但 ack 失败;
消息2 修改积分值为20,成功,ack 成功
消息1重新消费 修改积分值为10

唯一索引 栏目子部分_唯一索引 栏目子部分


自问自答:

这个问题其实牵扯出了消息顺序消费 的问题
需要确保消息1 被成功消费
之后再去消费消息2

但是,这样又会降低系统的性能
感觉还是想岔了,如果有大神看到此文的话,敬请解答,不胜感激