可能重复:
如何在 JDBC 中获取插入 ID?
我有以下表格:
customer(cid, ...)
book(cid, rid)
reservation(rid, ...)
我想在它的表中添加一个预订,然后我想在和book
之间添加一个关系。customer
reservation
我怎么知道rid
它是自动生成的,当我执行查询时我确实得到了ResultSet
返回?
这rid
是使用序列和触发器从 Oracle 自动生成的。
可能重复:
如何在 JDBC 中获取插入 ID?
我有以下表格:
customer(cid, ...)
book(cid, rid)
reservation(rid, ...)
我想在它的表中添加一个预订,然后我想在和book
之间添加一个关系。customer
reservation
我怎么知道rid
它是自动生成的,当我执行查询时我确实得到了ResultSet
返回?
这rid
是使用序列和触发器从 Oracle 自动生成的。
请参阅您的问题,我相信您正在使用语句。在这种情况下,您可以使用Statement.RETURN_GENERATED_KEYS
. 另请考虑此链接,因为以下解决方案可能对 Oracle 数据库有冲突。
这是一个小例子:
Connection connection = database.getConnection();
PreparedStatement statement = connection.prepareStatement(myQuery, Statement.RETURN_GENERATED_KEYS);
int count = statement.executeUpdate();
if(count <= 0){
//value not inserted
}
ResultSet results = statement.getGeneratedKeys();
if(results.next){
System.out.println(generatedKeys.getLong(1));
}
如果您使用 ORM:
如果您使用的是 JPA entitiyManager.merge(entity);
(或更新),则应返回带有 ID 的持久实例。与休眠session.merge(entity);
(或更新)非常相似
不知道 java/jsp 的情况如何,但如果它是关系数据库,则必须使用一组查询 - 即获取您知道的一个 id (cid),然后从 book 表中删除。我知道没有其他方法。
希望有帮助。