溢出通常是指数值型的溢出问题。 针对这个问题,小编总结了解决mysql无符号整数型自减法运算时溢出问题的教程。 希望对大家的同学会有帮助。
在mysql中对无符号整数字段执行自减法运算时,如果结果小于0,则会直接溢出,且不会报告错误。
通常,应该会报告bigintunsignedvalueisoutofrange错误。 至少我的本地mysql是的,但在线mysql中成功运行,字段值已达到40亿4294967295或更高。
可能是由于mysql配置问题,但找不到配置方法,也没有配置权限。 所以只能从程序里下手。
程序生成的sql原本如下所示。
updatetablesetfield=field-1 wherexxx=XXX;
减去1,判断结果的话,必须要查库吧?
所以我用了这个方法。
将字段=字段-1修改为:
field=convert(field(-1 ),signed () ) )。
这样就解决了。 减法运算时,如果值为负值,则直接为0。