Я обременен базой данных ERP, в которой отсутствуют какие-либо внешние ключи и, следовательно, отсутствует ссылочная целостность.
Я пишу сценарий для проверки большинства основных таблиц в нашей базе данных на наличие потерянных записей.
Например, в этом случае я работаю с нашими таблицами продаж.
SLCDPM - Customer Master Table
SOMAST - Sales Order Master
SOITEM - Sales Order Items
SORELS - Sales Order Releases
По сути, для этих (и целого ряда других таблиц) мне нужно проверить, есть ли записи в SORELS, которые не отображаются ни в одной из таблиц над ним. Затем возьмите SOITEM и проверьте над ним. И т.д.
Я начал писать сценарии, но количество строк становится смешным. Вот где я начал с этих четырех таблиц.
select 'Sales Order Master',* from somast where fcustno not in (select fcustno from slcdpm where ftype <> 'P')
SELECT 'Sales Order Item',* FROM soitem WHERE fsono NOT IN (SELECT fsono FROM somast)
select 'Sales Order Release',* from sorels where (fsono+finumber) not in (select (fsono+finumber) from SOITEM)
Причина, по которой я остановился, заключалась в том, что я только что понял, что SORELS (нижняя таблица) проверяет только таблицу перед ней, а не все таблицы перед ней.
Кто-нибудь знает сценарий, который я могу использовать, чтобы сделать это более автоматизированным или лучшим способом сделать это?