各数据库插入并更新
发布时间:2022-12-10 11:33:53 所属栏目:MySql教程 来源:
导读: mysql:
老生常谈的问题,业务中出现批量插入的操作,但是有些数据需要判断是否存在,存在则更新。
那么在mysql当中,使用on duplicate key update是可以达到这个目的的!
关于这个方法
老生常谈的问题,业务中出现批量插入的操作,但是有些数据需要判断是否存在,存在则更新。
那么在mysql当中,使用on duplicate key update是可以达到这个目的的!
关于这个方法
|
mysql: 老生常谈的问题,业务中出现批量插入的操作,但是有些数据需要判断是否存在,存在则更新。 那么在mysql当中,使用on duplicate key update是可以达到这个目的的! 关于这个方法的使用,百度上已经有很多介绍,就不在这里赘述了。 数据库插入操作_ajax技术如何同时向两个列数相同的表插入数据_power designer 插入数据 图中定义的mergeRoleAllocationLastVehicleSql就是典型的判断插入或更新。前提是需要判断触发条件是否改变 1.设置为主键发生了变化 2.设置的唯一索引发生了变化,像图中我设置了code+area_manage_id为唯一联合索引,他们两有一个或多个的值一旦发生变化,数据就会插入,反之则进行更新,且更新的是update后追加的数据 图中mergeRoleAllocationLastEnterpriseSql是典型的判断是否存在,存在则不操作,不存在则插入,出发条件同上述插入或更新操作。 主要是留存一下使用过程中遇到的问题。 1. 使用jdbctemplate来操作的数据库,那么动态sql的拼写上,需要注意字段名称相符,否则会报错 Unknown column '***' in 'field list' 此时还能遇到jdbctemplate的一个深坑问题, template.queryForList,这个方法不能返回list对象,只会获取单列值的list,例如一张表有十个字段,这个就只返回一个字段的所有list。。当你使用它来返回对象时,会报错类似下面的数据: Incorrect column count: expected 1, actual 10 2. 数据表结构中,新增时间与更新时间字段一般都是会有的,默认给 `create_datetime` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', `update_datetime` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', 会跟随数据更新修改对应时间。 但是结合on duplicate key update使用的时候,如果所有的字段都是相同且已存在的,那么该条数据不会更新,时间也不会更新(主要是当时操作重复数据,时间一直未更新,还挠头了。。) DM数据库: DM作为国产数据库,插入并更新的操作,与db2相似。 采用merge into的方式,以表中设置的主键或索引为判断条件,更新除此之外的其余字段,如果是新数据则插入。当然图中的sql定义比较粗糙,看看就好,自己如果是采用预定义的sql,可以采用stringbuilder去拼接数据库插入操作,减少对象创建。 与mysql相同的地方是它遇到重复的数据,不会去主动更新,只有发现某字段或者某些字段变动 (编辑:开发网_运城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐



浙公网安备 33038102330464号