业务代码会判断insert返回值,插入成功时,会返回1,插入失败返回0,以此来判断插入操作是否成功,但是如果使用 insert on duplicate key update,则可能返回2、1、0。之所以会返回2,是因为MySQL先执行了insert,如果存在唯一主键冲突,则执行update语句,相当于执行了2条语句。
<insert id="insertMemberInfo" parameterType="com.entity.MemberInfo"> INSERT IGNORE INTO member_info ( `member_id`, old_member_id, ) VALUES (#{memberId},#{oldMemberId}) ON DUPLICATE KEY UPDATE old_member_id = #{oldMemberId} </insert>
INSERT INTO member_info (
member_id,
old_member_id
)
VALUES
("1180918022595196", "1180724061202302")
ON DUPLICATE KEY UPDATE
old_member_id = "1180724061202302";
如果这条记录以及存在,则会返回如下结果:
/* 受影响行数: 2 已找到记录: 0 警告: 0 持续时间 1 查询: 0.000 sec. */