如何获取在oracle中插入的最后一行的id

时间:2016-03-10 14:31:39

标签: oracle

我正在使用一个带有插入触发器的oracle表,该触发器从序列中获取下一个值并将其用作主键ID。

我无法更改数据库,因此我想知道是否有办法从新插入的行中检索分配的ID。

如果只有一个用户,则选择max(id)将起作用,但事实并非如此。

有办法做到这一点吗?

版本:

NLSRTL                                  11.2.0.3.0  Production
Oracle Database 11g Enterprise Edition  11.2.0.3.0  64bit Production
PL/SQL                                  11.2.0.3.0  Production
TNS for Linux:                          11.2.0.3.0  Production

2 个答案:

答案 0 :(得分:2)

一些选择: 如果有一个自然键与您生成的ID一起使用(您插入了包含唯一键的列),那么选择具有这些键值的行将起作用。

您可以在insert语句上使用RETURNING子句来返回ID列值,但是并非所有中间件连接都支持此值。

如果触发器检查您是否已在insert上设置了id字段,并且仅在为该列传入null时仅提取sequence.nextvalue,那么请自行获取ID序列并将该值包含在您的插入声明。

如果表格设置了审核列(created_user / created_Date类似的东西),那么您始终可以选择最后插入的行。

答案 1 :(得分:2)

您可以使用sequence pseudocolumn CURRVAL获取序列的当前值:

SELECT sequence_name.CURRVAL
FROM   DUAL;