【发布时间】:2020-06-30 02:19:46
【问题描述】:
主要问题
是否有一个 SQL 命令可以让我从表行中选择一个值,并在同一个 SQL 命令中更新该值?
更详细的问题
我在一个电子商务网站上工作,我在该网站上使用 MYSQL 数据库,该数据库有一个 products 表,其中包含产品列表,等等。
此表中包含一个quantity 字段和一个sold 字段。
quantity 表示该产品的生产总量,sold 是该产品的当前销售量/用户购买量。
因此,如果 sold 字段与 quantity 匹配,我想更新前端 HTML 以指示它缺货。
所以当用户购买“x”数量的产品时,我知道我可以执行以下两个 SQL 命令来更新 sold 字段:
SELECT sold FROM products WHERE productID = ?
我会用刚刚购买的产品的 ID 回填 ?。
获得sold 值后,我将添加用户刚刚购买的金额,然后执行更新命令,例如:
UPDATE products SET sold = ? WHERE productID = ?
执行两个不同的 SQL 命令是最好的方法吗?还是将其组合在一个 SQL 命令中更好?
另外,我怎样才能最好地锁定这个特定的product 使用 SQL 语句在表中,以便如果用户 A 购买产品“xyz”同时用户 B 购买相同的产品没有我要更新的 sold 字段的竞争条件?
更新: 我正在使用java与MYSQL数据库进行通信。
【问题讨论】:
-
你的编程语言是什么?
-
我正在使用 Java 与 MySQL 数据库通信。
-
你使用的是 Spring、纯 JDBC 还是其他?
-
您是否尝试过仅增加价值?更新产品 SET 已售出 = 已售出 + ? WHERE productID = ?