Как обнаружить изменения и обновить главную таблицу? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть одна мастер-таблица, которая создается несколькими CTE 'UNION ALL' вместе. Не все созданные CTE используются для создания главной таблицы, а только для создания других CTE, например:

CTE1,
CTE2 (FROM CTE1 LEFT JOIN tblA on CTE1.GroupData = tblA.GroupData),
CTE3,
CTE4,
CTE5 (FROM CT3 LEFT JOIN CTE4 on CT3.id = CT4.id),
SELECT * FROM CTE2 
UNION ALL
SELECT * FROM CTE5

Каждый CTE1, CT3 и CTE4 создается из нескольких таблиц в моей базе данных, конечно, каждый CTE1 или CTE3 или CTE4 имеют другой формат, вот пример CTE1:

CTE1 AS(
  SELECT a AS 'Col1'
         b AS 'Col2'
         tbl3.GroupData AS GroupData
  FROM tbl1 AS n
      LEFT JOIN tbl2 AS m ON m.m_id = n.n_id
      LEFT JOIN tbl3 AS o ON o.o_id = m.m_id
  WHERE m.is_active = 1 
      AND 'PROD1' = (SELECT...)
)
...

Простой способ обновить главную таблицу, если есть какие-либо изменения в CTE (точнее, изменения в tbl2 или tbl3..v ... v) удалить основную таблицу и запустить сценарий ЗАПРОСЫ - СОЕДИНЕНИЕ ВСЕ. Но поскольку существует сто миллионов строк, такой способ невозможен. Так у кого-нибудь есть решение для этого?

...