php - 如果为正,mysql 减少计数器

标签 php mysql sql

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

相关文章:

php - jQuery 解析/显示来自 php json_encode 的 json 数据

php - 如何在 laravel Eloquent 中将 int 转换为字符串?

mysql - SQL,如何查找列值的变化

php - 解决查询中的错误

php - 安装 Magento 时出错

mysql - 按特定增量值移动 MySQL 数据库中的所有日期

mysql - 使用go连接mysql数据库

php - 如何解决分号附近多语句 mysql 查询的语法错误

sql - 获取MySQL中空格前的所有字符

php - PDO/MySQL 使用 if 语句获取多列