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