Количество строк, обновленных в таблице оракула - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть таблица с именем t1, которая уже обновлена ​​файлом.У меня есть таблица t2, которая создается как резервная копия таблицы t1 до внесения изменений.Теперь я хочу знать, сколько записей было обновлено в таблице t1.В любом случае я могу объединиться с резервной таблицей и узнать, сколько записей было изменено?Или как использовать функцию sql%rowcount в уже обновленной таблице?Или как мне продолжить с ALL_TAB_MODIFICATIONS?

1 Ответ

0 голосов
/ 26 сентября 2018

Вы можете объединить таблицы по их первичному ключу (потому что вы не обновляли это, надеюсь!), А затем сравнить каждый столбец ... вам также придется проверять наличие нулей, и это сделает довольно многотипирование.Вы могли бы использовать all_tab_cols и немного sql для создания вашего запроса (напишите sql, который создает sql в качестве вывода)

На самом деле, подумав об этом, вы могли бы обойтись без меньшего набора текста, выполнив командуNatural объединяет таблицы вместе, чтобы получить набор строк, которые не изменились, и удаляет этот набор из исходного полного набора:

select * from original
Minus
select original.* from original natural inner join backup

Я никогда не делал этого, но теория заключается в том, что естественное объединение объединяет всеравные имена столбцов, поэтому каждый столбец каждой таблицы будет представлен в условии соединения.Это внутреннее соединение, поэтому будут представлены только те столбцы, которые не изменились.Любые столбцы, которые стали нулевыми или имеют значение, равное нулю, также исчезнут.Следовательно, это набор строк, которые не изменились.Если все, что вам нужно, это подсчет, сделайте подсчет исходной таблицы за вычетом результата этого соединения.Если вы хотите узнать, какие строки изменились, сделайте результирующий набор минус.

В идеале вы не должны этого делать;вместо этого в момент запуска обновления запишите количество строк, на которые оно повлияло.Тем не менее, эту технику можно использовать задолго до того, как будет выполнено обновление (но до запуска какого-либо другого обновления)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...