美文网首页
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