使用PostgreSQL获取索引值

时间:2012-10-24 15:26:47

标签: java postgresql

我有一个有两个表的数据库。

一个表(表A)有3列:

   idpms serial NOT NULL,
   iduser integer NOT NULL,
   iduser2 integer NOT NULL,

另一个(表B)3栏

  idmessage serial NOT NULL,
  idpms integer NOT NULL,
  text character varying(255),

我正在使用Java来管理我的数据库。

首先,使用用户1和用户2的值更新表A. 使用插入此数据时生成的idpms值,表B已更新为idpmstext

我有两个问题:

  1. 如何在表A中插入数据后检索idpms的值?

  2. 在Java中,我可以以某种方式提取idpms并将其转换为int吗?

3 个答案:

答案 0 :(得分:1)

Q1:是的。 Q2:是的。

Serial仅为autoincrementing integer

插入后没有特殊的命令来获取值,你可以使用sql查询。 如果你想在插入之前获得价值,那么This article讨论它,我希望你得到你想要的东西

答案 1 :(得分:0)

insert into t (iduser, iduser2) values (1,2)
returning idpms

答案 2 :(得分:0)

我认为您正在寻找KeyHolder对象。

假设您使用Spring执行数据库操作:

import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.support.KeyHolder;
// stuff...

    KeyHolder generatedKeyHolder = new GeneratedKeyHolder();

    // Execute the update
    namedJdbcTemplate.update(sqlQuery, params, generatedKeyHolder);

    // Retrieve the map of ALL the autoincremented fields in the table
    // Just get the desired one by field name
    Integer idpms = (Integer) generatedKeyHolder.getKeys().get("idpms");

    // use idbpms as parameter for your next query...

希望有所帮助