如何在oracle数据库中查找最后一条插入的数据

发布网友 发布时间:2022-04-20 01:38

我来回答

6个回答

热心网友 时间:2022-04-09 18:25

有以下几个方法,供您参考。

1、对于提交(最后一次操作commit了)的话可以查询那个提交段SELECT

列名1,列名2……FROM 表名 VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE where VERSIONS_STARTTIME IS NOT null ORDER BY VERSIONS_STARTTIME DESC;查出来的第一条就是最后改变的数据

2、如果表里面有序列或固定的排序字段可按倒排序后取第一条where rownum<2 order by 排序字段 desc

3、还有另外一种办法就是利用ORACLE伪列rowid

select * from tbl t1 where t1.rowid=(select max(rowid) from tbl t2)

4、在redo log中找到对应相关的表的插入语句,但是这样找到的是sql语句,而不是数据。查redo log得使用log miner工具。

这是几项常用的方法,希望我的回答能给您带来帮助。

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。

热心网友 时间:2022-04-09 19:43

如果你的表有"插入时间"这样的字段,就找时间最大的记录
如果没有的话,就得查redo log了,在redo log中找到对应相关的表的插入语句,但是这样找到的是sql语句,而不是数据。查redo log得使用log miner工具。追问时间最大?怎么表示呢?

热心网友 时间:2022-04-09 21:18

表里面是否有序列?是否有固定的排序字段?
如果有就好办了。排序后取第一条

select * from tbl t1 where t1.rowid=(select max(rowid) from tbl t2)

这样不知道是否可以。因为每次插入毕竟ID是不变的,而且递增

热心网友 时间:2022-04-09 23:09

1、对于提交(最后一次操作commit了)的话可以查询那个提交段
SELECT 列名1,列名2……
FROM 表名 VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE where
VERSIONS_STARTTIME IS NOT null ORDER BY VERSIONS_STARTTIME DESC;
查出来的第一条就是最后改变的数据
2、如果表里面有序列或固定的排序字段可按倒排序后取第一条
where rownum<2 order by 排序字段 desc
3、还有另外一种办法就是利用ORACLE伪列rowid
select * from tbl t1 where t1.rowid=(select max(rowid) from tbl t2)
4、在redo log中找到对应相关的表的插入语句,但是这样找到的是sql语句,而不是数据。查redo log得使用log miner工具

热心网友 时间:2022-04-10 01:17

倒序查第一个就行了呗

热心网友 时间:2022-04-10 03:42

看你数据库表结构吧

1 根据时间
2根据 rowid
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com