MySQL精确值算术可以处理在数值表达式评估期间发生的溢出,因为发生的溢出取决于操作数的范围。将算术表达式中使用的值更改为其他数据类型可以避免溢出。
例如,将BIGINT最大值转换为DECIMAL并向其添加1后,可以按以下方式处理溢出-
mysql> Select 9223372036854775807.0 + 1; +---------------------------+ | 9223372036854775807.0 + 1 | +---------------------------+ | 9223372036854775808.0 | +---------------------------+ 1 row in set (0.01 sec)