繁体   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