MySQL の条件付き挿入ステートメント
SQL では、通常、データベース テーブルにレコードを挿入するために INSERT ステートメントが使用されます。ただし、特定の条件が満たされた場合にのみレコードを挿入する必要がある場合はどうすればよいでしょうか?条件付き INSERT を実行できますか?
問題ステートメント
「products」と「orders」という 2 つのテーブルがあるシナリオを考えてみましょう。 「products」テーブルには、製品の詳細とその手持ち数量 (qty_on_hand) が格納されます。 「注文」テーブルは注文の詳細を追跡します。
特定の製品の注文があり、その注文を満たすのに十分な数量が手元にあるかどうかを確認する必要があるとします。従来は、個別のクエリを実行して手持ちの数量を確認し、条件が満たされた場合に INSERT を実行していました。ただし、このアプローチは同時実行の問題に対して脆弱です。
条件付き挿入ソリューション
MySQL は、SELECT...WHERE 構文を使用して条件付き挿入を実行する便利な方法を提供します。
INSERT INTO TABLE SELECT value_for_column1, value_for_column2, ... FROM wherever WHERE your_special_condition
この構文では、SELECT ステートメントが指定された条件を満たす行を返す場合にのみ、テーブルに行を挿入できます。例:
insert into orders (product_id, qty) select 2, 20 where (SELECT qty_on_hand FROM products WHERE id = 2) > 20;
このクエリでは、サブクエリが 20 より大きい値 (十分な在庫を示す) を返した場合、INSERT ステートメントは製品 ID 2 を持つ行を「orders」テーブルに追加します。それ以外の場合、行は挿入されません。
利点
条件付き INSERT ステートメントを使用すると、次のような利点があります。
以上がMySQL で条件付き挿入を実行できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。