结论:
- 非严格模式下,会存储为 0 。
- 严格模式下,报错。
注意,在现实业务中,非严格模式下的行为是不能接受的。
验证:
在 mysql 5.6.40
版本验证。
创建表:
CREATE TABLE `test_table` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`num` bigint unsigned NOT NULL,
PRIMARY KEY(`id`)
) ENGINE=InnoDB CHARSET=utf8mb4;
插入负数、正数:
INSERT INTO `test_table` (num) VALUES(-1);
INSERT INTO `test_table` (num) VALUES(99);
INSERT INTO `test_table` (num) VALUES(-999);
查询数据:
mysql> select * from test_table;
+----+-----+
| id | num |
+----+-----+
| 1 | 0 |
| 2 | 99 |
| 3 | 0 |
+----+-----+
** 严格模式下呢?会报错。见下面的测试:**
mysql> SET sql_mode = 'STRICT_TRANS_TABLES';
mysql> INSERT INTO `test_table` (num) VALUES(-1);
(1264, u"Out of range value for column 'num' at row 1")