我正在尝试实现一个简单的信用系统,所以我的用户表中有一列“信用”,我想用 PHP/MySQL 执行以下操作:
if (credits >= 1)
credits = credits - 1;
else
error(not_enough_credits);
是否可以在一个查询中执行此操作?显然,我可以对演职员表执行 SELECT
查询,如果 >=1 则执行 UPDATE
以将计数器减一,但这可能会导致并发问题。
最佳答案
UPDATE myTable SET credits = (credits - 1) WHERE credits > 0
在这种情况下,where 将像 if
一样工作。如果您为其提供有效的用户 ID,这也适用于多个用户。
UPDATE myTable SET credits = (credits - 1) WHERE id=12345 AND credits > 0
关于php - 如果为正,mysql 减少计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24177484/