”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > MySQL INSERT 语句可以有条件吗?

MySQL INSERT 语句可以有条件吗?

发布于2024-11-11
浏览:546

Can MySQL INSERT Statements Be Made Conditional?

MySQL 中的条件 INSERT 语句

问题: 有条件地执行 INSERT 操作是否可行,类似于IF语句?

详细说明:

假设我们需要下单20件商品,产品ID为2。为了保证库存充足,我们首先检查现有数量:

SELECT IF(
    ( SELECT SUM(qty) FROM orders WHERE product_id = 2  )   20
    

如果结果为 true,则执行 INSERT 查询。然而,这种方法容易受到并发问题的影响。多个同时订单可能会导致超卖。

答案:

是的,可以使用以下语法进行条件 INSERT 语句:

INSERT INTO TABLE
SELECT value_for_column1, value_for_column2, ...
FROM wherever
WHERE your_special_condition

如果 SELECT 语句没有返回行(即特殊条件为 false),则不会发生插入。

示例:

For给定模式:

products: id, qty_on_hand
orders: id, product_id, qty
insert into orders (product_id, qty)
select 2, 20
where (SELECT qty_on_hand FROM products WHERE id = 2) > 20;

仅当现有库存充足时,此查询才会插入一行。否则,不会执行插入。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3