如何包装int列而不是溢出

时间:2015-12-17 14:48:31

标签: mysql integer-overflow

假设类型为unsigned int的列。由于4294967295是最大的无符号整数,因此该查询将失败并出现溢出错误:

update mytable set intcolumn = intcolumn + 1;

我怎样才能实现这一目标而不是溢出,4294967295 + 1将成为0(零)?

更一般地说,通过添加任何整数,我只想将整数包裹在零而不是溢出。

我刚刚发现在mysql 5.5.5之前,整数默默地缠绕着。仅5.5.5及以上会抛出错误。

1 个答案:

答案 0 :(得分:2)

更新mytable set intcolumn CASE intcolumn WHEN< 4294967295然后intcolumn + 1 WHEN> 4294967295然后0