【发布时间】:2013-11-18 03:37:17
【问题描述】:
我有一个 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 是在数据快照上进行这两个选择还是数据是动态的。
【问题讨论】:
标签: sql oracle select insert union