我正在存储带有小数(12,3)的用户资金。当我向用户收取一些金额时它可以工作但是当我用0收费时,有时候查询返回false,有时返回true.false和true doesn&#39 ; t依赖于任何东西,我认为这是sql bug。我的查询如下:
update `user_account`
set `total_money` = `total_money` - ?
where `user_id` = ?
and `total_money` >= ?
order by `total_money` desc LIMIT 1
然后我绑定了这样的$charge_amount,$user_id,$charge_amount)
为什么当$charge_amount
为0时,它返回随机false和true。我知道$charge_amount
0没有意义但是这个过程将取决于process.System将计算金额然后将收取用户费用。如果return false
,则会插入您的付款失败。我知道我可以通过检查金额是0来修复它只是返回true,但我想知道为什么它是随机的原因并且是存储金钱的最佳方式,并且减去所有返回错误的原因受影响,如果受影响则返回true,如果不是则返回false。
简要说明
当我收取0时,表示有时不受影响,有时会受到影响