У меня есть база данных Oracle, и я пытаюсь программно определить, имеет ли представление столько же записей, сколько и таблицы, из которых он извлекает. Это может быть не так, потому что представление может ошибочно запрашивать таблицы в другой схеме. Сначала я пытался делатьУсловия Oracle Race при выполнении select select select и insert
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 два выбора в моментальном снимке данных или если данные являются динамическими.