oracle insert into 遇到的一个坑

从A 表复制一批数据到A表,里面一个字段替换掉而已

表里三个字段 id(自增),model_Id,mode_name,id用序列解决。

sql:

<insert id="copyDetails">
  insert into A(id,model_id,detail_name)
  select A_SEQ.NEXTVAL , ${newId}, detail_name from Awhere model_id =#{oldId}
</insert>

本地调试遇到问题:

org.springframework.jdbc.BadSqlGrammarException: 
### Error updating database.  Cause: java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束

### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: insert into A(id,model_id,detail_name)      select A_SEQ.NEXTVAL, ?,detail_name from A where model_id =?
### Cause: java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束

; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束

后来问一个大神,说增加一条语句:

useGeneratedKeys="false"

变成

<insert id="copyDetails" useGeneratedKeys="false">

insert into A(id,model_id,detail_name) select A_SEQ.NEXTVAL , ${newId}, detail_name from Awhere model_id =#{oldId}

</insert>

然后就解决了,但是网上查的时候,说useGeneratedKeys默认就是false,大神也不知道具体原因。。。

https://blog.csdn.net/kleguan/article/details/74058482

这个就很奇怪了,默认值为什么必须显示出现,希望有看到的大神给个指点,感谢!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值