2012-04-19 55 views
57

我對postgres有點新。我想在postgres表中的字段中取一個值(這是一個整數)並將其增加1。例如,如果表'totals'有2列,'name'和'total',Bill總共有203個,那麼爲了將Bill的總數移至204,我將使用什麼SQL語句?增加Postgres的值

回答

116
UPDATE totals 
    SET total = total + 1 
WHERE name = 'bill'; 

如果你想確保當前值確實是203(而不是無意中再次增加它),你也可以添加另一個條件:

UPDATE totals 
    SET total = total + 1 
WHERE name = 'bill' 
    AND total = 203; 
+0

我試圖增加**非整數**數據類型並得到:'錯誤:運算符不存在:字符變化+整數 線2:總共=總數+1' 通過像這樣的整數值轉換解決'SET total = total :: int + 1 ' – 2012-10-31 03:05:05

+19

@ Stew-au:請不要在varchar列中存儲數字。從長遠來看,這會給你帶來麻煩。使用整數(或bigint或任何適合的),但不要使用字符數據類型。 – 2012-10-31 07:12:37

+2

這個陳述是原子的,還是我需要悲觀鎖定表格以便先寫入? (我擔心在分配總額和總計提取總額+ 1之間已經對錶格進行了一些處理。) – miho 2015-09-17 14:47:17