美文网首页
mysql存在不插入,存在更新操作

mysql存在不插入,存在更新操作

作者: 机智的老刘明同志 | 来源:发表于2018-11-07 01:32 被阅读91次

存在即更新,不存在即插入:

        我们平常的INSERT INTOSQL是这么写:

        INSERT INTO demo_in(a,b,c)  VALUES(123, 2, 4);

        比如C是主键,插入2次就会抛出异常:

        [23000][1062] Duplicate entry '4' for key 'PRIMARY'

        所以我们用到REPLACE关键字,他的作用如题,存在即更新,不存在即插入,和delete+Insert Into一样。但是它一个原子操作,是一步完成,所以我们不用担心有其他问题的出现,但是使用REPLACE的时候,一定要保证表有唯一主键。

        重要:执行REPLACE语句后,系统返回了所影响的行数,如果返回1,说明在表中并没有重复的记录,如果返回2,说明有一条重复记录,系统自动先调用了DELETE删除这条记录,然后再记录用INSERT来插入这条记录。

         改造一下上面的语句就是:

        REPLACE INTO demo_in(a,b,c)  VALUES(123, 2, 4);

存在不插入,不存在再插入:

        这个其实很简单,因为Mysql不能做到插入的时候带where条件,故用了一张临时表来处理。

        INSERT INTO demo_in(a,b,c) SELECT 123, 2, 4 FROM DUAL WHERE NOT EXISTS(SELECT c FROM demo_in WHERE c = 4);

        用临时表DUAL来标记数据,然后插入到demo_in表中。条件是c=4,并且not exists,也就是当c=4条件满足,则不插入。

https://www.cnblogs.com/yelbosh/p/5813865.html

相关文章

网友评论

      本文标题:mysql存在不插入,存在更新操作

      本文链接:https://www.haomeiwen.com/subject/iefmxqtx.html