我有一个有两个表的数据库。
一个表(表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已更新为idpms
和text
我有两个问题:
如何在表A中插入数据后检索idpms
的值?
在Java中,我可以以某种方式提取idpms
并将其转换为int吗?
答案 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...
希望有所帮助