mysql 使用 unsigned decimal 的注意事项

mysql 提供了 decimal(m, n) 这个类型,类比 java 的 BigDecimal,不过需要指定整数位数 m,小数位数 n。

如果是unsigned decimal 类型,既非负数,需要设置 mysql 的 sql_modelSTRICT_TRANS_TABLES

操作

建表语句如下:

CREATE TABLE `asset` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `money` decimal(12, 8) unsigned NOT NULL DEFAULT '0.0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

由于 money 字段是非负 decimal,所以不能成功设置将小于 0 的值

SET SESSION sql_mode = 'STRICT_TRANS_TABLES';
UPDATE asset SET money = -1;

此时会报

Error : Out of range value for column 'money' at row 1

参考

http://www.cnblogs.com/linguoguo/p/6487097.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。