gpt4 book ai didi

java - 按顺序批量插入到多个表中

转载 作者:行者123 更新时间:2023-11-30 10:02:27 25 4
gpt4 key购买 nike

我们在 Java 应用程序中实现批量插入代码时遇到问题。下面是我们的表结构-

  • 我们有三个表:表 1、表 2 和表 3。
  • 表 1 的主键(SeqId,本质上是序列)是其余两个表(表 2 和表 3)的外键。

Table Structure

当前实现:

作为当前批处理操作的一部分,对于每次迭代,我们首先依次插入 Table1,然后是 Table2 和 Table3。

[伪代码]

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 中的相应行。

是否可以使用批量插入(不是过程或匿名 block )来实现它?

我们正在使用 Oracle 11gJava8

最佳答案

我觉得你可以用一个变量来存储序列值

DECLARE
ID_SEQ PLS_INTEGER;
BEGIN
ID_SEQ := ID_SEQ.nextval;
INSERT INTO Table1(SeqId, OtherField1) VALUES (ID_SEQ , 'Some Val');
INSERT INTO Table2(SeqId, OtherField1) VALUES (someId2, ID_SEQ , 'Some Val');
INSERT INTO Table3(SeqId, OtherField1) VALUES (someId3, ID_SEQ , 'Some Val');
END;

关于java - 按顺序批量插入到多个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56948293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com