一、在项目中遇到insert into 与 insert ignore 引起了不可控的事情,致使在目标库内查询不到NULL数据mysql
官方说法:
不阻止错误的insert,而且不会更新原有数据sql
1) 建表,含主键以及列 id 不容许为空ide
mysql> create table tbpx ( -> id int auto_increment primary key NOT NULL, -> name varchar(32) NOT NULL, -> age int(10) DEFAULT NULL -> )engine=innodb default charset=utf8; Query OK, 0 rows affected (1.01 sec)
2) 使用insert插入数据测试
mysql> insert into tbpx values ('1','xiaoming','20'); Query OK, 1 row affected (0.10 sec)
3) 使用insert ignore 插入数据,对于发生错误的不理会。可是不会被插入
mysql> insert into tbpx values ('1','xiaoming1','21');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> insert ignore into tbpx values ('1','xiaoming1','21');
Query OK, 0 rows affected, 1 warning (0.00 sec)code
4) 使用insert ignore 插入 NULL 空数据
mysql> insert ignore into tbpx values ('NULL','NULL','NULL');
Query OK, 1 row affected, 2 warnings (0.23 sec)
mysql> insert ignore into tbpx values ('','','');
Query OK, 1 row affected, 2 warnings (0.25 sec)blog
5) 查询结果:rem
表结构不容许为NULL,而后ignore插入了NULL,在select执行时没法按NULL条件查询it
可经过如下语句查询:select name from tbpx where name not in ('','xiaoming');
innodb