oracle+mybatis批量插入踩坑记
发布日期:2021-06-24 07:07:03 浏览次数:5 分类:技术文章

本文共 1035 字,大约阅读时间需要 3 分钟。

最近在项目中需要使用oracle+mybatis批量插入数据,因为自增主键,遇到问题,现记录如下:

一、常用的两种sql写法报错

1、insert ... values ...

1 
2   insert all3   
4     into TableName(id, name) values(TableName_sequence.nextval, #{item.name})5   
6   
7   SELECT 1 FROM DUAL8

报错结果:java.sql.SQLException: ORA-00001: 违反唯一约束条件...

2、insert ... select ...

1 
2   insert into TableName(id, name)3   
4     select tableName_sequence.nextval, #{item.name} from dual5   
6

报错结果:java.sql.SQLException: ORA-02287: 此处不允许序号

二、解决办法:

1、使用函数包装序列

1 create or replace function table_getSeq return number is2   Result number;3 begin4   select TableName_sequence.nextval into Result from dual;5   return(Result);6 end table_getSeq ;

将两种sql中的“tableName_sequence.nextval”替换为函数名“table_getSeq”

2、使用触发器

1 create or replace trigger table_insert2   before insert on tableName 3   for each row4 begin5   select TableName_sequence.nextval into :new.id from dual;6 end;

将两种sql中关于id的字段去掉即可

 

转载于:https://www.cnblogs.com/timeflying/p/11324256.html

转载地址:https://blog.csdn.net/weixin_30896763/article/details/99491929 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Nginx配置文件详解
下一篇:项目论证

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月02日 06时48分09秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章