获取记录插入到数据库表时获得的唯一 id

Lah*_*ima 1 sql oracle

我有一个带有唯一id列的 oracle 表。当我将数据插入表中时,我将最后一个id.

insert into my_table vlaues((select max(id) from my_table), 'etc', 'etc');
Run Code Online (Sandbox Code Playgroud)

可以有多个进程同时写入该表。

自动提交是on.

除了id.

当我向表中插入一条记录时,有没有办法id在我插入记录后获取记录的值?

如我所见,如果我select max(id) from my_table在插入后使用,我可能无法获得插入语句中使用的 id,因为其他人可能在我发出select.

Gor*_*off 5

Oracle 12 终于有了内置的身份列。因此,如果您使用的是最新版本的 Oracle,则可以直接使用它。在这里阅读。

在早期版本中,最好使用序列。这保证了唯一性,即使在多线程环境中也是如此。我总是实现触发器来更新 id 列。 是对类似问题的回答,解释了如何执行此操作。