ON DUPLICATE KEY UPDATE添加索引值实现重复插入变更update

博客提及了MyBatis中的语句,还涉及数据表以及添加索引值的内容,与信息技术领域的后端开发相关,有助于了解数据库操作方面的知识。

mybatis中的语句:

<insert id="insertUserMaterialRemain" parameterType="com.unicom.entity.UserMaterialRemainInfo">
        insert into user_material_remain_info(mti_type_parent_id,ui_id,mti_type_id,mti_type_name,umri_num,umri_unit,mti_img_url)
        values(#{mtiTypeParentId,jdbcType=INTEGER}, #{uiId,jdbcType=INTEGER}, #{mtiTypeId,jdbcType=INTEGER},
        #{mtiTypeName,jdbcType=VARCHAR}, #{umriNum,jdbcType=INTEGER},#{umriUnit,jdbcType=VARCHAR},#{mtiImgUrl,jdbcType=VARCHAR})
        ON DUPLICATE KEY UPDATE
        umri_num = umri_num+#{umriNum,jdbcType=INTEGER}
    </insert>

数据表
在这里插入图片描述

添加索引值
在这里插入图片描述

### 使用 `ON DUPLICATE KEY UPDATE` 更新所有字段 当执行插入操作时遇到唯一键冲突,可以使用 `INSERT ... ON DUPLICATE KEY UPDATE` 语法来处理这种情况。为了更新除主键外的所有列,在构建 SQL 查询时需明确指定要更新哪些列及其新值。 对于自动更新所有非主键字段的情况,并无直接命令一次性覆盖所有目标表中的可变列;因此,必须显式列出这些列并设置它们等于对应的 `VALUES()` 函数返回的新输入值[^2]。 下面是一个具体的例子: 假设有一个名为 `users` 的表格结构如下所示: | id (Primary Key) | name | email | |------------------|------------|----------------| | 1 | John Doe | john@example.com| 如果希望向此表中添加一条记录 `(id=1, 'Jane Smith', 'jane@domain.org')` 并且在发生重复键错误时更新除了 ID 外的所有其他属性,则应编写如下形式的查询语句: ```sql INSERT INTO users (id, name, email) VALUES (1, 'Jane Smith', 'jane@domain.org') ON DUPLICATE KEY UPDATE name = VALUES(name), email = VALUES(email); ``` 上述代码会尝试插入新的用户数据到数据库里去。如果有相同ID存在的时候就会触发 `ON DUPLICATE KEY UPDATE` 子句,从而实现对现有条目的部分修改而不是完全替换整个行的内容。 需要注意的是,从 MySQL 版本8.0.20 开始,如果你在一个涉及子查询的选择性插入过程中应用了带有 `VALUES()` 表达式的 `ON DUPLICATE KEY UPDATE` 操作,那么将会收到警告提示信息[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值