zoukankan      html  css  js  c++  java
  • sql解决主键冲突

    在数据插入的时候,假设主键对应的值已经存在,则插入失败!这就是主键冲突。
    当主键存在冲突(duplicate key)的时候,可以选择性的进行处理,即忽略、更新或者替换。

    1.忽略

    insert ignore into table

    保持原记录,忽略新插入的记录

    2.替换

    replace into table

    替换原记录,即先删除原记录,再插入新的记录

    3. 更新

    insert into table value("xx","xx") ON DUPLICATE KEY UPDATE

    其实这个是原本需要执行3条SQL语句(SELECT,INSERT,UPDATE),缩减为1条语句即可完成。

    IF (SELECT * FROM where 存在) {
        UPDATE  SET  WHERE ;
    } else {
        INSERT INTO;
    }

    如:

    mysql> insert into Tble values (1,'xxx','xxx') ON DUPLICATE KEY UPDATE status ='drain';
    Query OK, 2 rows affected (0.00 sec)

    上面语句伪代码表示即为

    if (select * from table where id=1) { 
        update device set status ='drain' where id=1 
    } else {
        insert into table value (1,'xxx','xxx')
    }

    很明显,id=1 是有的,这样就执行update操作

    mysql> select * from table;
    +-------+--------+-----------+
    |     id| status | spec_char |
    +-------+--------+-----------+
    |     1 | drain  | yangting  | 
    |     2 | dead   | zhong     | 
    +-------+--------+-----------+
    2 rows in set (0.00 sec)
    
    
  • 相关阅读:
    Vs 开发时无法断点问题
    VS启动调试速度异常的缓慢问题
    vs2017 调试时 浏览器关闭不想中断调试
    聚簇索引和非聚簇索引
    java实现阿里云短信服务发送验证码
    mysql定时器
    token,加密,签名
    Redis更新缓存同步数据库的理解
    Token
    解决哈希冲突的方法
  • 原文地址:https://www.cnblogs.com/luffe/p/7865316.html
Copyright © 2011-2022 走看看