记录在开发过程中遇到的一次ORA-00001(违反唯一性约束)
下面是批量插入语句,执行时会报 ORA-00001
原因:在批量插入数据时
1、有重复的数据同时插入
2、插入的数据在数据库表中已经存在
<insert id="insertYFdata" parameterType="java.util.List">
insert into #[use_database_name]TAB_B(
BILL_CODE
)select A.*
from(
<foreach item="itm" index="index" collection="list" separator="UNION ALL">
select
#{itm.billCode,jdbcType=VARCHAR} BILL_CODE
FROM dual
</foreach>
)A
</insert>
在插入语句中增加distinct函数去重
<insert id="insertYFdata" parameterType="java.util.List">
insert into #[use_database_name]TAB_B(
BILL_CODE
)select distinct A.*
from(
<foreach item="itm" index="index" collection="list" separator="UNION ALL">
select
#{itm.billCode,jdbcType=VARCHAR} BILL_CODE
FROM dual
</foreach>
)A
</insert>
解决第二种情况(插入的数据在数据库表中已经存在):
在执行插入语句之前先查一遍数据库表,将查到的数据与插入的数据做对比,如果有重复的数据 ,则将重复的数据从插入数据中剔除后再执行插入