假设类型为unsigned int
的列。由于4294967295是最大的无符号整数,因此该查询将失败并出现溢出错误:
update mytable set intcolumn = intcolumn + 1;
我怎样才能实现这一目标而不是溢出,4294967295 + 1
将成为0
(零)?
更一般地说,通过添加任何整数,我只想将整数包裹在零而不是溢出。
我刚刚发现在mysql 5.5.5之前,整数默默地缠绕着。仅5.5.5及以上会抛出错误。答案 0 :(得分:2)
更新mytable set intcolumn CASE intcolumn WHEN< 4294967295然后intcolumn + 1 WHEN> 4294967295然后0