如何从最后插入的行中获取值?

2022-08-31 16:33:38

有没有办法从最后插入的行中获取值?

我正在插入一行,其中PK将自动增加,我想获得此PK。只有 PK 保证在表中是唯一的。

我正在将Java与JDBC和PostgreSQL一起使用。


答案 1

使用PostgreSQL,您可以通过RETURN关键字进行操作:

PostgresSQL - RETURNING

INSERT INTO mytable( field_1, field_2,... )
VALUES ( value_1, value_2 ) RETURNING anyfield

它将返回“anyfield”的值。“anyfield”可以是一个序列,也可以不是。

要将其与JDBC一起使用,请执行以下操作:

ResultSet rs = statement.executeQuery("INSERT ... RETURNING ID");
rs.next();
rs.getInt(1);

答案 2

请参阅 java.sql.Statement 的 API 文档。

基本上,当您调用 或 时,请使用常量。然后,您可以调用以获取由该执行创建的所有行的自动生成的键。(假设您的 JDBC 驱动程序提供了它。executeUpdate()executeQuery()Statement.RETURN_GENERATED_KEYSgetGeneratedKeys

它沿着这样的思路:

Statement stmt = conn.createStatement();
stmt.execute(sql, Statement.RETURN_GENERATED_KEYS);
ResultSet keyset = stmt.getGeneratedKeys();

推荐