[英]Decrementing field in Postgresql doesn't work as expected
因此,我正在增加Postgresql中的字段。 假設我有一個表格questions
和一個名為votes
的BIGINT字段,其值已經為100000000。
現在我想這樣遞減:
UPDATE questions SET votes=votes-31500000 WHERE id = 1;
不幸的是,由於某種原因,最終結果在該字段中的值為-21500000
。 但是,如果我先獲取該字段值,然后在我的代碼中而不是在SQL查詢中計算必要的遞減值,則該值正確計算為68500000
,然后可以使用以下查詢設置:
UPDATE questions SET votes=#{calculated_value} WHERE id = 1;
不用說,由於並發問題,后一種方式是不可接受的。 因此,我的問題是:為什么Postgresql會采用這種方式,以及如何使用SQL查詢正確減小值?
我猜您正在將初始值設置為:
10,000,000
代替
100,000,000
(為清楚起見添加了逗號)
這就是為什么您減少31,500,000會產生負值的最簡單解釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.