我有這個需求,我需要在購買後更新賬戶的餘額。有時候,平衡是不夠的。所以,我只想在餘額足以進行購買時更新。如何編寫正確的SQL此只有在有足夠的餘額可用時才寫更新查詢
我需要這樣的東西
Update account set balance = balance - amount only if balance >= amount.
我怎麼能寫在SQL這樣的事情。
我有這個需求,我需要在購買後更新賬戶的餘額。有時候,平衡是不夠的。所以,我只想在餘額足以進行購買時更新。如何編寫正確的SQL此只有在有足夠的餘額可用時才寫更新查詢
我需要這樣的東西
Update account set balance = balance - amount only if balance >= amount.
我怎麼能寫在SQL這樣的事情。
可以使用CASE
表情就像這樣:
Update account
SET balance = CASE
WHEN balance >= amount THEN balance - amount
ELSE balance
END;
爲什麼即使更新行,如果它沒有足夠的平衡呢?這種方法有可能導致更多的錯誤,然後是簡單的where子句。 –
您正在尋找WHERE關鍵字。它允許您將命令過濾到表的一個子集。例如:
Update account
SET balance = balance - amount
WHERE balance >= amount
+1 - 簡單而有效。 –
我假設你也有類似'WHERE ACCOUNT_ID ='?你是否需要返回一個結果(到另一個查詢或客戶端),說明更新是否發生?並在什麼樣的SQL?你在MySQL,SQL-Server,Oracle,TeraData,PostGreSQL嗎? – MatBailie