java - 为什么需要数据库代理键的 generatedKeys?

标签 java sql postgresql jdbc

我有一个 Postgres 数据库,我正在编写一个 Java 程序来查询, 插入, 更新, 并从中删除数据。 我的一些表有代理键, DB 自动递增。

我使用 getGenerateKeys() 方法来接收最后插入的元组的 key 。 但我不明白为什么我需要这些 key 以及如何使用它们?

我可以在不接收这些 key 的情况下插入数据。

// 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);
            }

这些生成的 key 的目的和/或值(value)是什么?

最佳答案

如果您插入到多个表,并且这些表具有指向另一个表的外键。

您将需要插入引用的键,然后也将其插入到第二个表的外键列中。

表A的id外键表B的id

插入表B并在插入表A时使用相同的Id

关于java - 为什么需要数据库代理键的 generatedKeys?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56837632/

相关文章:

php - 查询后如何通过 PHP 对 SQL 行进行分组或标记

java - 如何杀死或停止java applet中的其他线程

java - 如何从java中的输入字符串中提取数值

php - 使用 PHP 获取任何给定输入的唯一哈希值

postgresql - PSQL 不区分大小写的 INDEX lower() 不起作用

r - PostGIS 和 R - 更快、更小地获取数据

postgresql - 将 varchar 列转换为 smallint 时数据发生变化

Java XML 解析

java - 在 Java 应用程序上使用 Skobbler API 进行实时路线导航

sql - ORA-00928 : missing SELECT keyword. 请解释一下