我正在尝试实现一个简单的信用系统,因此我的用户表中有一列“信用”,我想对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