我有以下表格:
customer(cid, ...)
book(cid, rid)
reservation(rid, ...)
我想在其表格中添加预订,然后我想在book
和customer
之间的reservation
中添加关系。
如果rid
是自动生成的,我怎么知道?当我执行查询时,我确实收到了ResultSet
?
使用序列和触发器从Oracle自动生成rid
。
答案 0 :(得分:3)
请参阅您的问题我相信您正在使用声明。在这种情况下,您可以使用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);
(或更新)
答案 1 :(得分:1)
Dunno如何使用java / jsp,但如果它是一个关系数据库,你必须使用一组查询 - 即得到你知道的一个id(cid)然后从书表中删除。我不知道其他任何方式。
希望有所帮助。