我目前正在撰寫一個 Android 電子商務應用程式。在購物車中,有一個商品數量的增加和減少按鈕(購物車資料存盤在本地)。
以下是用于根據按鈕增加和減少數量的兩個查詢。問題是當數量減少時,它會變成負值
謝謝
StoreDao.kt
@Query("UPDATE cart_database SET quantity = quantity - 1 where id = :id ")
suspend fun subtractQuantity(id: Int): Int
@Query("UPDATE cart_database SET quantity = quantity 1 where id= :id ")
suspend fun addQuantity(id: Int): Int
uj5u.com熱心網友回復:
如果下限為 0,上限為 10,那么您可以使用:-
@Query("UPDATE cart_database SET quantity = max(quantity - 1,0) where id = :id ")
suspend fun subtractQuantity(id: Int): Int
@Query("UPDATE cart_database SET quantity = min(quantity 1,10) where id= :id ")
suspend fun addQuantity(id: Int): Int
uj5u.com熱心網友回復:
在WHERE子句中添加另一個條件,如果數量當前為,則阻止數量更新0:
UPDATE cart_database
SET quantity = quantity - 1
WHERE id = :id AND quantity > 0;
這個要求也可以在表級別解決,通過定義一個CHECK約束,像這樣:
CREATE TABLE cart_database (
id INTEGER PRIMARY KEY,
quantity INTEGER CHECK(quantity >= 0)
);
這將不允許列數量中出現負值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/331764.html
下一篇:過濾器kotlin內的條件最大值
