MySQL:NOT NULL 字段不插入数据,会发生什么?


#MySQL 笔记


结论:

在字段未指定默认值的场景中:

  1. 非严格模式下,若不插入数据会存储字段类型的默认值。
  2. 严格模式下,报错。

验证:

在 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;

插入数据时仅指定 id:

INSERT INTO `test_table` (id) VALUES(1);

查询数据:

mysql> select * from test_table;
+----+-----+
| id | num |
+----+-----+
| 1  | 0   |
+----+-----+

** 严格模式下呢?会报错。见下面的测试:**

mysql> SET sql_mode = 'STRICT_TRANS_TABLES';
mysql> INSERT INTO `test_table` (id) VALUES(2);
(1364, u"Field 'num' doesn't have a default value")


( 本文完 )