2012-11-15 40 views
0

我有這個需求,我需要在購買後更新賬戶的餘額。有時候,平衡是不夠的。所以,我只想在餘額足以進行購買時更新。如何編寫正確的SQL此只有在有足夠的餘額可用時才寫更新查詢

我需要這樣的東西

Update account set balance = balance - amount only if balance >= amount. 

我怎麼能寫在SQL這樣的事情。

+0

我假設你也有類似'WHERE ACCOUNT_ID ='?你是否需要返回一個結果(到另一個查詢或客戶端),說明更新是否發生?並在什麼樣的SQL?你在MySQL,SQL-Server,Oracle,TeraData,PostGreSQL嗎? – MatBailie

回答

0

可以使用CASE表情就像這樣:

Update account 
SET balance = CASE 
       WHEN balance >= amount THEN balance - amount 
       ELSE balance 
       END; 
+0

爲什麼即使更新行,如果它沒有足夠的平衡呢?這種方法有可能導致更多的錯誤,然後是簡單的where子句。 –

1

您正在尋找WHERE關鍵字。它允許您將命令過濾到表的一個子集。例如:

Update account 
SET balance = balance - amount 
WHERE balance >= amount 
+0

+1 - 簡單而有效。 –

相關問題