【发布时间】:2010-12-30 21:39:55
【问题描述】:
有没有办法从最后插入的行中获取值?
我正在插入一行,由于创建的序列,PK 将自动增加,我想得到这个序列号。只有 PK 保证在表中是唯一的。
我正在使用带有 JDBC 和 Oracle 的 Java。
我忘了补充说我想使用下面的结果集来检索这个值。 (我已经用 mysql 尝试过,它成功了,但我不得不切换到 Oracle,现在我得到了 ID 的字符串表示,而不是实际的序列号)
Statement stmt = conn.createStatement();
stmt.executeUpdate(insertCmd, Statement.RETURN_GENERATED_KEYS);
stmt.RETURN_GENERATED_KEYS;
ResultSet rs = stmt.getGeneratedKeys();
if(rs.next()){
log.info("Successful insert");
id = rs.getString(1);
}
上面的 sn-p 将返回存储在 mysql 表中的列 int 值。但是由于我已经切换到Oracle,返回的值现在是一个奇怪的字符串值。
【问题讨论】:
-
@Nathan 是的,我已经看到了,我刚刚用一个示例更新了我的问题,这与您刚刚发布的链接相似。
-
这个问题不是链接问题的重复,因为这个问题是针对 Oracle 的,而另一个问题是针对 PostgreSQL 的。由于 Oracle 和 PostgreSQL 之间的功能差异,其他问题的最佳答案不能用作此问题的答案。
-
getGeneratedKeys()中返回的唯一列是ROWID- oracle 11。我认为这是您提到的“奇怪”值。