我正在开发一个用于安排后勤分发的Web应用程序。我使用Java,JSF 2.0和Oracle-XE作为数据库。 在Oracle-XE中,我实现了序列和触发器来自动增加某些属性的ID。 我的问题是,如果我执行应用程序以添加新客户,那么我需要从数据库中检索增加的ID,然后将其保存在我的客户对象中。还有另一种方法可以直接从数据库中获取递增的ID吗?我不喜欢从数据库中选择ID的解决方案。
由于
答案 0 :(得分:2)
如果您通过JDBC直接针对数据库发出SQL(如果您使用的是对象关系映射层,API可能支持类似的东西),则可以在INSERT期间使用RETURNING子句。像
这样的东西INSERT INTO table_name( column1, column2, ... , columnN )
VALUES( :1, :2, ... , :N )
RETURNING key_column INTO :new_key
这会将为KEY_COLUMN
列填充的触发器的值返回到:new_key
绑定变量。