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

MySQL INSERT 語句可以有條件嗎?

Susan Sarandon
發布: 2024-11-14 16:25:02
原創
290 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板