java批插入到具有序列的多个表中
在java应用程序中实现批插入代码时,我们面临一个问题。下面是我们的表格结构-
- 我们有三张表:表一、表二和表二;表3李>
- 表1的主键(SeqId,本质上是序列)是其余两个表(表2和表3)的外键李>
当前实施:
作为当前批处理操作的一部分,对于每个迭代,我们先在表1中顺序插入,然后在表2中插入&;表3
[伪代码]
INSERT INTO Table1(SeqId, OtherField1) VALUES (ID_SEQ.nextval, 'Some Val');
INSERT INTO Table2(SeqId, OtherField1) VALUES (someId2, ID_SEQ.currval, 'Some Val');
INSERT INTO Table3(SeqId, OtherField1) VALUES (someId3, ID_SEQ.currval, 'Some Val');
我们正在尝试的内容:
现在我们正在尝试实现批插入。我们已经创建了三个独立的PreparedStatement,对于每个迭代,我们都在执行statement.addBatch();
,最后我们按顺序执行statement.executeBatch()
现在的问题是ID_SEQ.currval
总是取当前的序列值,这不是我们想要的。对于表1中SeqId的每个值,我们需要表2和表3中对应的行
是否可以使用批插入(而不是过程或匿名块)实现此功能
我们正在使用Oracle 11g
和Java8
# 1 楼答案
我认为可以使用变量来存储序列值
# 2 楼答案
您可以检索序列的下一个值,并使用该值填充表
//请原谅语法上的任何错误,因为我没有使用任何代码编辑器进行验证。 干杯