我正在尝试实现一个简单的信用系统,因此我的用户表中有一列“信用”,我想对PHP / MySQL执行以下操作:

if (credits >= 1)
  credits = credits - 1;
else
  error(not_enough_credits);


是否可以在一个查询中执行此操作?显然,我可以对信用额进行SELECT查询,如果> = 1,则执行UPDATE将计数器减1,但这可能会带来并发问题。

最佳答案

UPDATE myTable SET credits = (credits - 1)  WHERE credits > 0


在这种情况下,该位置将像if一样工作。给您提供有效的用户ID,这对于单独使用多个用户也可以正常工作。

UPDATE myTable SET credits = (credits - 1)  WHERE id=12345 AND credits > 0

10-08 09:00