如何从最后插入的行中获取值?
2022-08-31 16:33:38
有没有办法从最后插入的行中获取值?
我正在插入一行,其中PK将自动增加,我想获得此PK。只有 PK 保证在表中是唯一的。
我正在将Java与JDBC和PostgreSQL一起使用。
有没有办法从最后插入的行中获取值?
我正在插入一行,其中PK将自动增加,我想获得此PK。只有 PK 保证在表中是唯一的。
我正在将Java与JDBC和PostgreSQL一起使用。
使用PostgreSQL,您可以通过RETURN关键字进行操作:
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);
请参阅 java.sql.Statement 的 API 文档。
基本上,当您调用 或 时,请使用常量。然后,您可以调用以获取由该执行创建的所有行的自动生成的键。(假设您的 JDBC 驱动程序提供了它。executeUpdate()
executeQuery()
Statement.RETURN_GENERATED_KEYS
getGeneratedKeys
它沿着这样的思路:
Statement stmt = conn.createStatement();
stmt.execute(sql, Statement.RETURN_GENERATED_KEYS);
ResultSet keyset = stmt.getGeneratedKeys();