如何将序列值视为生成的键?

时间:2010-04-30 15:42:53

标签: java sql database db2

这是我的情况和我的约束:

  1. 我正在使用Java 5,JDBC和DB2 9.5

  2. 我的数据库表包含一个代表主键的BIGINT值。由于各种原因太复杂而无法进入,我将记录插入表中的方法是对VIEW执行插入操作; INSTEAD OF触发器从SEQUENCE中检索NEXT_VAL并执行INSERT到目标表中。

  3. 我可以更改触发器,但我无法更改基础表或通过视图插入的一般方法。

  4. 我想从JDBC中检索序列值,就像它是生成的密钥一样。

  5. 问题:如何访问从SEQUENCE中提取的值。我是否可以在DB2中触发一些消息,将此序列值浮动回JDBC驱动程序?

    解决: 我求助于在单独的JDBC调用中从序列中检索PREVIOUS_VAL。

2 个答案:

答案 0 :(得分:0)

你看过java.sql.Statement.getGeneratedKeys()吗?我不会抱太大希望,因为你做的事情很不寻常,但你永远都不知道。

答案 1 :(得分:0)

您应该能够使用FINAL TABLE语法执行此操作:

select * from final table (insert into yourview values (...) );

这将在触发所有触发器后返回数据。