Welcome everyone

insert ignore

mysql 汪明鑫 749浏览 0评论

 

伪代码:

       Person personFromDb = personMapper.selectPerson(person.getUserId);
        if(personFromDb == null){
            int rst = personMapper.insertIgnore(person);
            if(rst > 0){
                return;
            }
        }

        //没有新增,则更新
        personMapper.update(person);

这里我们也可以try-catch,try语句块正常,直接return,catch异常说明新增失败,打下log,继续后续更新逻辑

但这样一来影响代码美观,而且会有一定性能影响,所以还是insert igonre 更好点

 

@Insert("insert igonre into person(user_id,score) value(#{userId},#{score})")
    @Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")
    int insertIgonre(Person person);

 

insert igonre 可以忽略新增带来的错误

 

例子

insert into code values(1,’china’,’nanjing’,’86’,’25’);

 

如果再执行一遍

insert into code values(1,’china’,’nanjing’,’86’,’25’);

 

则会报如下错误:ERROR 1062 (23000): Duplicate entry ‘1’ for key 1

 

此时如果加上ignore关键字,则就不会报错:

insert ignore into code values(1,’china1′, ‘nanjing1′,’0086′,’025’);

执行结果:Query OK, 0 rows affected (0.00 sec)

 

 

 

转载请注明:汪明鑫的个人博客 » insert ignore

喜欢 (0)

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz