ホームページ >データベース >mysql チュートリアル >MySQL INSERT ステートメントを条件付きにできますか?

MySQL INSERT ステートメントを条件付きにできますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-14 16:25:02299ブラウズ

Can MySQL INSERT Statements Be Made Conditional?

MySQL の条件付き INSERT ステートメント

質問: 条件付きで INSERT 操作を実行することは可能ですか。もしステートメント?

詳細:

製品 ID 2 の商品を 20 個注文する必要があるとします。十分な在庫を確保するために、まず手元の数量を確認します。

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)、挿入も返しません。

例:

指定されたスキーマの場合:

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。