(本文档仅供参考)
现象
带参数的电子表格进行批量导入数据时,重复两次导入后报主键或唯一约束冲突:ORA-00001:违反唯一约束条件,见下图
原因:
在报表设置合理的情况下,此报错是因为第一次批量导入数据时,数据库没有对应的数据,所以执行insert操作,而第二次进行批量导入时,数据库已经存在对应数据,但是报表带参数,此时根据参数筛选出的数据并未包含需要excel表导入的数据,见下图:
所以进行批量导入数据后报错。
对于带参数的报表,批量导入功能产品是根据参数获取的数据集进行insert和update操作的,若根据参数获取的数据集在需要导入的excel表中不存在,则执行insert操作,反之,则执行update操作,对于上图中的报错,是因为数据库中已经存在数据,而前端根据参数获取的结果集并不包含excel表数据,所以导致报错,当切换参数,通过参数获取的结果集包含excel表的数据后,批量导入数据正常,见下图:
那么如何做到不切换参数都可以实现第一次导入数据执行insert操作,第二次导入数据执行update操作?
解决方案:
可以采用电子表格-回写规则中的强制先执行更新再执行插入解决,见下图
关于强制先执行更新再执行插入的说明见此wiki文档:电子表格-回写规则