在這點我們需要使用到的sql語句
語法:
update 表名 set 某個值=case when @你要修改的值 > 表中的某一個值 then 成立之後要設定的值 else 前面沒有成立設定的值 end
舉例:
我根據傳入的年齡age來設定type為1還是0,1表示成年,0表示未成年
update Table set name=@name,type=case when @age>=18 then 1 else 0 end
明白了上面的語法之後,我們來看下面這個例子:
// ProductInventory 是實體類
//StatusId -2表示庫存為0,-1表示低於最小庫存量,1表示正常庫存量,2表示超過最大存款量
//TotalCount 資料庫當前庫存量
//MaxCount 最大庫存量標識
//MinCount 最小庫存量標識
//PorductId 就是id
//TotalCount=TotalCount+@TotalCount 表示我增加的庫存加上資料庫剩餘的庫存
//@TotalCount+TotalCount>MaxCount then 2 表示我傳入的(@ToalCount)+原來資料庫中剩餘的庫存(TotalCount)如果大於了設定的最大庫存標識,那就向StatusId設定為2
public bool BePutInStorage(ProductInventory productInventory) { string sql = "update ProductInventory set TotalCount=TotalCount+@TotalCount,StatusId=case"; sql += " when @TotalCount+TotalCount>MaxCount then 2"; sql += " when @TotalCount+TotalCount>=MinCount and @TotalCount+TotalCount<=MaxCount then 1"; sql += " when @TotalCount+TotalCount<MinCount and @TotalCount+TotalCount>0 then -1"; sql += " else -2"; sql += " end"; sql += " where ProductId=@ProductId"; SqlParameter[] sp = { new SqlParameter ("@TotalCount", productInventory.TotalCount), new SqlParameter ("@ProductId", productInventory.ProductId), }; }