在Oracle数据库中获取最后插入记录的ID

27

我想要获取一个带有自增长ID列的新插入记录的ID (使用序列和触发器方法)。请问标准的做法是什么?

3个回答

38

使用 PL/SQL 的 RETURNING 子句:

insert into mytable (...) values (...)
returning id into v_id;

1
这只能在PL/SQL中工作吗?我用普通的SQL出现了语法错误。 - prauchfuss
1
是的,它只是PL/SQL。 - Tony Andrews
它可以用于 execute immediate 吗? - Akshay
@akshay 是的:execute immediate 'insert into mytable (...) values (...) returning id into :retval' using out v_id; - Tony Andrews
这种方法在使用选择插入时无法正常工作,因为存在插入多行的可能性。我仍在寻找一种获取最近插入的ID的方法。也许我可以从序列中获取它。 - Skystrider

0

使用results.lastRowid在同一张表上进行查询,例如 "SELECT * FROM YOUR_TABLE WHERE ROWID = :lastRowid"。

lastRowid的样式类似于 "AAAS/tAAFAAAA/QAAB"。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接