我有一个 Oracle 数据库,我正在尝试以编程方式确定视图是否具有与其从中提取的表相同数量的记录。这可能不是因为视图可能错误地查询了另一个模式中的表。起初我试着做
select count(*) from view
然后做
select count(*) from
(select * from table1
union
select * from table2)
并比较结果。
问题是我担心有人在我的第一个查询和第二个查询之间的时间内插入到 table2 中。在那种情况下,我可能从视图中获得了 5 条记录,但插入完成后,我可能从第二个查询中获得 6 条记录。
我不想虚报问题,所以我考虑做两个查询的联合:
select count(*) from view
union
select count(*) from
(select * from table1
union select * from table2)
但我不知道这是否真的会阻止在查询到视图和查询到表联合之间发生插入。
基本上我需要知道 Oracle 是在数据快照上进行这两个选择还是数据是动态的。