首頁 >資料庫 >mysql教程 >MySQL INSERT 語句可以有條件嗎?

MySQL INSERT 語句可以有條件嗎?

Susan Sarandon
Susan Sarandon原創
2024-11-14 16:25:02272瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn