萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> 解決mysql無符號整型自減運算時溢出的問題

解決mysql無符號整型自減運算時溢出的問題

溢出通常是指的數字類型的一個溢出問題了,對於這個問題小編整理了一篇關於解決mysql無符號整型自減運算時溢出的問題的教程,希望對各位同學會有所幫助.

在mysql中給一個無符號整型字段做自減運算時,如果結果小於0,將直接溢出,並沒有報錯。
正常情況應該會報一個BIGINT UNSIGNED value is out of range的錯誤,至少我本地的mysql是這樣的,但線上的mysql中卻能正常執行,然後字段的值變成了四十多億4294967295。。。

可能是由於mysql的配置問題導致的,但我沒找到如何配置,也沒有權限配置。所以只能從程序上下手。
程序生成的sql本來是類似這樣的:

update table set field=field-1 where xxx=xxx;

自減1,如果要判斷結果的話,還得去查一下庫吧??
所以我使用了這種辦法。

把field=field-1改成:


field=convert(field+(-1), signed)

這樣就解決了,在相減時如果值是負值,會直接是0。

 

copyright © 萬盛學電腦網 all rights reserved