获取当前序列ID以存储在其他表中

时间:2015-05-11 13:11:49

标签: java oracle sequence spring-jdbc jdbctemplate

我们有多个表,所有表都与第一个表的主键(例如:id)相关。 Id配置为序列,在将数据插入第一个表时,我们在插入查询中使用sequence.nextval。 现在,在将数据插入其他表时,如何获取当前序列值或当前Id。

我们尝试过以下选项:

  1. sequence.currval,直接在insert语句中 2。select sequence.currval from dual
  2. 使用getJdbcTemplate().update()时抛出错误的上述两个选项。

    有人可以建议如何在将数据插入第一个表后将当前序列值传递给其他表吗?

1 个答案:

答案 0 :(得分:0)

如果要将相同的id(来自序列)插入到不同的表中,只需将其从第一个插入中获取并在其他插入中使用它。

PrepearedStatement stmt1 = conn.prepareStatement("INSERT INTO TABLE1 (id) VALUES(yoursequence.nextval)", Statemet.RETURN_GENERATED_KEYS);
stmt1.executeUpdate();
ResultSet rs = stmt1.getGeneratedKeys();
rs.next();
long id = rs.getLong(1);
PrepearedStatement stmt2 = conn.prepareStatement("INSERT INTO TABLE2 (id) VALUES(?)");
stmt2.setLong(1,id);
stmt2.executeUpdate();