【发布时间】:2019-07-01 14:37:21
【问题描述】:
我有一个 Postgres 数据库,我正在编写一个 Java 程序来查询, 插入, 更新, 并从中删除数据。 我的一些表有代理键, 数据库自动递增。
我使用getGeneratedKeys() 方法来接收最后插入的元组的键。
但我不明白为什么我需要这些密钥以及如何处理它们?
我可以在不接收这些密钥的情况下插入数据。
// Works as expected and gives me the last key.
PreparedStatement prepStmt = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
....
ResultSet rs = prepStmt.getGeneratedKeys();
if (rs.next()) {
this.lastID = rs.getInt(1);
}
这些生成的密钥的用途和/或价值是什么?
【问题讨论】:
-
例如,您可能希望使用生成的密钥来执行其他操作,例如将记录插入另一个表。
-
你的意思是作为另一个表中的外键?
-
是的,这就是我的示例的意思,尽管可能还有其他示例说明您为什么要从 Java 获取生成的密钥。
-
也许您想在 HTTP
Location标头中返回指向新资源的链接。 -
即使没有任何其他表:假设客户端需要此生成的 ID 的值以便将其存储在某处并稍后获取行值。
标签: java sql postgresql jdbc