Показать разделы

Когда БД новая, то можно легко удалить типоразмер. Со временем база набирает много связей, и удаление становится затруднительным. Скорее всего, не вычищены связанные таблицы или есть удаленные паспорта.

Рекомендуем оставлять запись с пометкой “Не использовать”, либо можно воспользоваться следующими рекомендациями в SQL.

Ниже расположены рекомендации с пояснениями и скриптами для очистки справочников.

ВНИМАНИЕ! Настоятельно рекомендуем предварительно произвести резервное копирование БД, выполнять все действия сначала на копии БД (в тексте документа указана БД "Metr7_tst" - копии рабочей БД), а потом применить на рабочей БД.

1.png

Для отмеченных записей в справочнике Типоразмеры СИ с пометкой 'УДАЛИТЬвыполнить на сервере SQL пакет запросов для версии БД 7.0.24.08 и выше по очистке ненужных записей справочника Типоразмеры с пометкой 'УДАЛИТЬ'

Следующие три запроса выводят количество потенциально возможных к удалению записей для информации.

--1. Просмотр всех Типов с пометкой 'УДАЛИТЬ' (см. скрин "Запросы УДАЛИТЬ типоразмеры")

select * from tips where TP like '%УДАЛИТЬ%'

--2. Просмотр всех Диапазонов и Характеристик точности с пометкой 'УДАЛИТЬ'

select * from tprz where DPZN like '%УДАЛИТЬ%' or HRTC like '%УДАЛИТЬ%' or IDTIPS in (select idtips from tips where TP like '%УДАЛИТЬ%')

--!!!--3. Предварительный просмотр всех паспортов СИ в типоразмерах которых есть пометка 'УДАЛИТЬ'

select IDEKZ, IDTPRZ, IsDeleted from ekz where idtprz in (select idtprz from tprz where DPZN like '%УДАЛИТЬ%' or HRTC like '%УДАЛИТЬ%') or idtprz in (select idtprz from tprz where idtips in (select idtips from tips where TP like '%УДАЛИТЬ%'))

ВНИМАНИЕ! Сначала проверить на тестовой копии БД (для примера указана Metr7_tst)!

При удачном выполнении (проверить результат в справочнике Типоразмеры СИ) повторить действия на рабочей БД!

2.png

--!!!-- присутствующие экз. в таблице с полем IsDeleted=1 (удаленные паспорта) можно удалить нижеуказанными запросами и “почистить” связанные таблицы для освобождения справочников типоразмеров:

delete from EKZDM where idekz in (select idekz from ekz where isdeleted=1)

delete from EKZRM where idekz in (select idekz from ekz where isdeleted=1)

delete from EKZRMF where idekz in (select idekz from ekz where isdeleted=1)

delete from EKZRCP where idekz in (select idekz from ekz where isdeleted=1)

delete from ekzmcp where idekz in (select idekz from ekz where isdeleted=1)

delete from ekzmkdh where idekzmk in (select idekzmk from ekzmk where idekz in (select idekz from ekz where isdeleted=1))

delete from ekzmk where idekz in (select idekz from ekz where isdeleted=1)

delete from ekzmkf where idekz in (select idekz from ekz where isdeleted=1)

delete from ekzip where idekz in (select idekz from ekz where isdeleted=1)

delete from ekzot where idekz in (select idekz from ekz where isdeleted=1)

delete from ekzkk where idekzr in (select idekz from ekz where isdeleted=1)

delete from ekzkk where idekzp in (select idekz from ekz where isdeleted=1)

delete from ekzdh where idekz in (select idekz from ekzdh where idekz in (select idekz from ekz where isdeleted=1))

--теперь можно удалить все помеченные на УДАЛЕНИЕ паспорта СИ

delete from ekz where isdeleted=1

--после чего можно удалить все помеченные на УДАЛЕНИЕ в справочнике Типоразмеры СИ одним общим запросом, если не осталось ссылок на паспорта экз.СИ (проверить запросом №3.):

delete from tprz where DPZN like '%УДАЛИТЬ%' or HRTC like '%УДАЛИТЬ%' or IDTIPS in (select idtips from tips where TP like '%УДАЛИТЬ%')

--или удалить помеченные на УДАЛЕНИЕ в справочнике Типоразмеры СИ Диапазоны (Хар.точности):

delete from tprz where DPZN like '%УДАЛИТЬ%' or HRTC like '%УДАЛИТЬ%'

--удалить помеченные на УДАЛЕНИЕ в справочнике Типоразмеры СИ типы:

delete from tips where TP like '%УДАЛИТЬ%'

Была ли статья полезна?
Да
Нет