Когда БД новая, то можно легко удалить типоразмер. Со временем база набирает много связей, и удаление становится затруднительным. Скорее всего, не вычищены связанные таблицы или есть удаленные паспорта.
Рекомендуем оставлять запись с пометкой “Не использовать”, либо можно воспользоваться следующими рекомендациями в SQL.
Ниже расположены рекомендации с пояснениями и скриптами для очистки справочников.
ВНИМАНИЕ! Настоятельно рекомендуем предварительно произвести резервное копирование БД, выполнять все действия сначала на копии БД (в тексте документа указана БД "Metr7_tst" - копии рабочей БД), а потом применить на рабочей БД.
Для отмеченных записей в справочнике Типоразмеры СИ с пометкой 'УДАЛИТЬ' выполнить на сервере 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)!
При удачном выполнении (проверить результат в справочнике Типоразмеры СИ) повторить действия на рабочей БД!
--!!!-- присутствующие экз. в таблице с полем 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 '%УДАЛИТЬ%'