#define NOT_FIXED_DEC 31
为什么要定义成31,而不是用一个其他的值表示呢?比如,-1
通过做Round函数,明白了背后的一种设计初衷:因为广义的scale可以为负数。如下例:
mysql> SELECT round(333.33, -1), round(333.33, 1);
Field 1: `round(333.33, -1)`
Catalog: `def`
Database: ``
Table: ``
Org_table: ``
Type: NEWDECIMAL
Collation: binary (63)
Length: 5
Max_length: 3
Decimals: 0
Flags: NOT_NULL BINARY NUM
Field 2: `round(333.33, 1)`
Catalog: `def`
Database: ``
Table: ``
Org_table: ``
Type: NEWDECIMAL
Collation: binary (63)
Length: 7
Max_length: 5
Decimals: 1
Flags: NOT_NULL BINARY NUM
+-------------------+------------------+
| round(333.33, -1) | round(333.33, 1) |
+-------------------+------------------+
| 330 | 333.3 |
+-------------------+------------------+
1 row in set (0.00 sec)
如果NOT_FIXED_DEC用-1表示,则会和这种广义Scale相冲突。用31表示,则可以避开有效值域。