簡體   English   中英

Postgresql中的減量字段無法按預期工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM