【发布时间】:2012-11-13 11:26:15
【问题描述】:
我有以下表格:
customer(cid, ...)
book(cid, rid)
reservation(rid, ...)
我想在其表中添加预订,然后我想在book 中添加customer 和reservation 之间的关系。
我怎么知道rid 是自动生成的,当我执行查询时我确实得到了一个ResultSet 返回?
rid 是 Oracle 使用序列和触发器自动生成的。
【问题讨论】:
我有以下表格:
customer(cid, ...)
book(cid, rid)
reservation(rid, ...)
我想在其表中添加预订,然后我想在book 中添加customer 和reservation 之间的关系。
我怎么知道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 的持久化实例。
与hibernate session.merge(entity);(或更新)颇为相似
【讨论】:
不知道 java/jsp 的情况如何,但如果它是关系数据库,则必须使用一组查询 - 即获取你知道的一个 id (cid),然后从 book 表中删除.我不知道有其他方法。
希望对您有所帮助。
【讨论】: