Mysql 批量插入事务唯一键重复处理

Posted boonya

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql 批量插入事务唯一键重复处理相关的知识,希望对你有一定的参考价值。

在资源组挂靠新的资源时,由于roleId和resGroupId 是组合唯一键,所以在外部事务提交有记录的时候,当前事务提交会存在重复记录,考虑是并发操作导致。

mysqlIntegrityConstraintViolationException: Cannot add or update a child row

利用重复建更新的原理:

 <insert id="bindResGroup">
        INSERT INTO
        `SECURITY_ROLE_RESOURCE_GROUP` (roleId, resGroupId)
        VALUES
        <foreach collection="resGroupIds" item="resGroupId" separator=",">
            ( #roleId, #resGroupId)
        </foreach>
        ON DUPLICATE KEY UPDATE roleId = VALUES(roleId),resGroupId=VALUES(resGroupId)
    </insert>

即使存在重复行记录也可以避免批量insert失败。

以上是关于Mysql 批量插入事务唯一键重复处理的主要内容,如果未能解决你的问题,请参考以下文章

MySQL处理重复键错误插入具有多个唯一索引的表;不是多列唯一索引

sql mysql批量插入,具有重复键更新(upsert),并具有条件数据更新

使用重复键更新在 MariaDB 中批量插入

mysql如何避免主键或者唯一索引重复导致的插入失败问题

主键唯一键重复插入解决方法

nodejs mysql批量插入重复密钥更新