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, qtyinsert 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