首页 > 数据库 > mysql教程 > MySQL INSERT 语句可以有条件吗?

MySQL INSERT 语句可以有条件吗?

Susan Sarandon
发布: 2024-11-14 16:25:02
原创
287 人浏览过

Can MySQL INSERT Statements Be Made Conditional?

MySQL 中的条件 INSERT 语句

问题: 有条件地执行 INSERT 操作是否可行,类似于如果

详细说明:

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

SELECT IF(
    ( SELECT SUM(qty) FROM orders WHERE product_id = 2  ) + 20
    <=
    ( SELECT qty_on_hand FROM products WHERE id = 2)
, 'true', 'false');
登录后复制

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

答案:

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

INSERT INTO TABLE
SELECT value_for_column1, value_for_column2, ...
FROM wherever
WHERE your_special_condition
登录后复制

If SELECT 语句不返回任何行(即特殊条件为 false),不进行插入

示例:

对于给定的 schema:

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;
登录后复制

如果有足够的数据,此查询只会插入一行手头有库存。否则,不会执行插入。

以上是MySQL INSERT 语句可以有条件吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板