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

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

Susan Sarandon
リリース: 2024-11-14 16:25:02
オリジナル
289 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート