我有以下表格:
customer(cid, ...)
book(cid, rid)
reservation(rid, ...)
我想添加一个保留在其表,然后我想在一个关系customer
和reservation
之间加入book
。
如何知道rid
是自动生成的,而当我执行查询时,我确实得到了返回的ResultSet
?
rid
是使用序列和触发器从Oracle自动生成的。
我有以下表格:
customer(cid, ...)
book(cid, rid)
reservation(rid, ...)
我想添加一个保留在其表,然后我想在一个关系customer
和reservation
之间加入book
。
如何知道rid
是自动生成的,而当我执行查询时,我确实得到了返回的ResultSet
?
rid
是使用序列和触发器从Oracle自动生成的。
请参考您的问题我相信您正在使用的语句。在这种情况下,您可以使用Statement.RETURN_GENERATED_KEYS
。下面的解决方案也可以考虑这个link对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),然后从书中摆脱表。我没有其他方式知道。
希望有所帮助。