首先在oracle表中插入记录?

时间:2014-03-25 10:42:48

标签: sql oracle

我们如何知道表格中第一个插入的记录,让我们考虑我们已经将100万条记录加载到一个表格中,而我们在这里没有任何时间戳记列。 如何找到它?

4 个答案:

答案 0 :(得分:2)

如果没有列表示插入顺序,如时间戳,串行字段(例如:主键),则无法找到第一个插入行的内容。 SQL标准清楚地说明数据集没有排序(没有"自然"顺序)。在重新索引数据库,重新加载数据库和类似操作之后,无法保证rownum,row id等所有hacks都能正常工作。

答案 1 :(得分:1)

不是100%准确(正如 piotrpo 指出的那样),但如果您对ORA_ROWSCNdocs)提供的值的准确性感到满意,您可以找到首先插入哪一行(当然,如果以后没有更新)。要正确,甚至不是行,而是行所在的块 - 您可以使用DBMS_ROWID函数深入到行级别(再次,不是100%精确):

SELECT  DBMS_ROWID.ROWID_ROW_NUMBER(ROWID),
SCN_TO_TIMESTAMP(ORA_ROWSCN) 
FROM table1 ORDER BY 2 DESC, 1 ASC

答案 2 :(得分:0)

如果您确定了带有ID的列,那么您无法知道哪一行是第一行,因为您不知道是否有人手动添加了ID低于​​休息的行,一种解决方案是添加到表字段使用时间戳/日期格式,为插入或修改的每一行插入时间。但...

SELECT SCN_TO_TIMESTAMP(ora_rowscn),ora_rowscn FROM your_table

你可以找到你的行被修改/添加...可能有一些解决方案但没有rowid。有了这个,你只能找到第一个/最后一个更新的行...

答案 3 :(得分:-1)

只需使用rowid

从my_table中选择*,其中rowid为 (     从my_table中选择min(rowid) )

它应该有用