MySQL像计数器一样由多个用户更新同一行

use*_*026 5 php mysql

我正在尝试为用户帖子增加一个喜欢的计数器。我的MySQL表中的帖子包含“喜欢”字段,该字段显示此特定帖子有多少喜欢的对象。现在,如果多个用户同时喜欢同一条帖子,将会发生什么?我认为这会导致冲突或无法正确递增?如何避免这种情况,我是否需要锁定行或拥有哪些选项?

我的查询可能看起来像这样:

UPDATE posts
    SET likes = likes + 1,
    WHERE id = some_value
Run Code Online (Sandbox Code Playgroud)

当用户不喜欢帖子时,也应该递减->喜欢-1

谢谢你的帮助!

Sty*_*hon 5

这是一个足够简单的查询,可以运行:

UPDATE mytable SET mycolumn = mycolumn + 1;
Run Code Online (Sandbox Code Playgroud)

这样,即使您有多个人同时喜欢,查询也不会在完全相同的时间运行,因此您最终会得到正确的数字。

诸如此类的查询运行时间不到一秒,因此您无需担心多个用户单击它们,除非您拥有数百万用户,然后您将遇到很多与查询有关的问题。