Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Oracle中检索上次插入的记录_Oracle - Fatal编程技术网

如何在Oracle中检索上次插入的记录

如何在Oracle中检索上次插入的记录,oracle,Oracle,可能重复: 我想知道我们如何获取上次插入的记录值,因为我想检索并查看最后插入到表中的详细信息,如果您有主键: insert into mytable (...) values (...) returning id into v_id; select * from YOURTABLE where primary_key=(select max(primary_key) from YOURTABLE) 请发布表结构,添加记录时是否添加了Id字段或日期时间?您所说的“详细信息”是什么意思

可能重复:


我想知道我们如何获取上次插入的记录值,因为我想检索并查看最后插入到表中的详细信息,如果您有主键:

insert into mytable (...) values (...)
returning id into v_id;
select * from YOURTABLE
    where primary_key=(select max(primary_key) from YOURTABLE)

请发布表结构,添加记录时是否添加了Id字段或日期时间?您所说的“详细信息”是什么意思?这只是一般的“给我最新的记录”吗?或者您想知道插入点处默认值或派生值的值吗?我认为您应该使用
.CURRVAL
来获取序列值。答案和注释仅在与插入相同的会话中起作用,我认为这不是OP想要的。(虽然这部分是基于复数“details”而不是特别要求ID,所以很有可能被证明是错误的!)@GuillaumePoussel-CURRVAL需要第二个查询,而RETURNING子句更优雅。
rowid
与“rownumber”完全不同。但更糟糕的是:
max(rowid)
不会给出“最新”行。谢谢。这是一个拼写错误,并已更正。关于
rowid
,我想Oracle会根据插入顺序为插入的行分配
rowid
。因为我有时使用它,它给出最后插入的行。您能解释一下吗?
rowid
值与数据的物理存储相关,并且可以重复使用,例如,如果一行被删除,然后再插入另一行,则新插入的行的ID将比旧行的ID“低”。谢谢你的解释。我在OLAP环境中工作,我的表基本上不会改变。i、 e.没有太多的删除和重新插入。这就是为什么我认为到目前为止,
rowid
对我有效。即使只在表中插入,也不能保证rowid会反映插入顺序。如果到目前为止它对你有效,那么你就是幸运的。