数据库:Oracle
我有一个表,其中有10列,我想在插入行时使用序列下一个值,并且还使用插入的序列号。
现在我已经搜索过并发现Spring的KeyHolder非常有用但仅限于少于8个字段,所以我无法使用它。
如何使用"select MySequence.nextval from dual"
触发jdbctemplate(NamedParameterJDBCTemplate)
查询并获取序列?
获取插入序列值的其他方法是什么?
答案 0 :(得分:4)
使用jdbctemplate
,您只需将序列生成器提及为值,例如
jdbcTemplate.update("INSERT INTO TABLE (id, data) VALUES (MySequence.nextval, ?)", new Object[] { data });
关于序列生成的注释:对于Oracle 12c之前的版本,您应该有一个触发器,它将为您递增序列。从12c开始,您可以使用自动增量功能。
答案 1 :(得分:3)
您可以像这样使用 JdbcTemplate 来实现:
final SqlRowSet sqlRowSet = jdbcTemplate.queryForRowSet(NEXT_VALUE_QUERY);
sqlRowSet.next();// mandatory to move the cursor
sqlRowSet.getLong(1);// the value of the nextval