MySQL中出现唯一索引冲突,使用ON DUPLICATE KEY UPDATE

版权声明:欢迎转载大宇的博客,转载请注明出处: https://blog.csdn.net/yanluandai1985/article/details/85603515

        在MySQL数据库中,如果在insert语句后面带上ON DUPLICATE KEY UPDATE 子句,而要插入的行与表中现有记录的惟一索引或主键中产生重复值,那么就会发生旧行的更新;如果插入的行数据与现有表中记录的唯一索引或者主键不重复,则执行新纪录插入操作。

        现在有一张表,其拥有一个唯一索引的EMPLOYEE_ID字段,那么在其它insert语句中,插入的EMPLOYEE_ID值已经在表中拥有,那么可以使用ON DUPLICATE KEY UPDATE  子句 来更新已有EMPLOYEE_ID的那条记录。       

        

        如果需要使用最新传递的值,可以用Mybatis的VALUES( 数据库字段 ) 来设置。

<insert id="saveEntity">
        INSERT INTO t_table (
          SOCIAL_NO,
          HOUSE_FUND_ACCOUNT,
          EMPLOYEE_ID,
          CREATE_DATE,
          CREATE_USER_ID,
          UPDATE_DATE,
          UPDATE_USER_ID
        ) VALUES (
          #{socialAccount},
          #{houseFundAccount},
          #{employeeId},
          now(),
          #{createdUserId},
          now(),
          #{createdUserId}
        ) ON DUPLICATE KEY UPDATE
         SOCIAL_NO = VALUES(SOCIAL_NO),
         HOUSE_FUND_ACCOUNT = VALUES(HOUSE_FUND_ACCOUNT),
         EMPLOYEE_ID = VALUES(EMPLOYEE_ID),
         UPDATE_DATE = now(),
         UPDATE_USER_ID = VALUES(UPDATE_USER_ID)
    </insert>

        参考地址:https://blog.csdn.net/plg17/article/details/78583692 

猜你喜欢

转载自blog.csdn.net/yanluandai1985/article/details/85603515
今日推荐