insert ignore : 根据主键或者唯一索引插入数据,如果当前数据存在,则不会报错,返回结果0,如果插入成功则返回为1,其实与Update语句意思差不多,不过一个是更新,一个是插入.注意 一定要有唯一索引或者主键ID,如果没有,则使用insert ignore毫无意义。
有一张如下:
CREATE TABLE `able_test` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`sex` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
我们准备两条sql语句,执行结果如下
INSERT IGNORE able_test(name,sex)
values('able',1);
#执行结果
[SQL]INSERT IGNORE able_test(name,sex)
values('able',1);
受影响的行: 1
时间: 0.011s
INSERT IGNORE able_test(name,sex)
values('able',1);
#执行结果
[SQL]INSERT IGNORE able_test(name,sex)
values('able',1);
受影响的行: 0
时间: 0.010s
总结下: 这种插入sql 一般用于接口幂等里面, 不管执行多少次结果都一样。比如我们的每日汇总,订单的创建等,都可以使用到这种插入方式。