Показать сообщение отдельно
Старый 05.05.2023, 15:48   #4  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,657 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Прямого способа не вижу, но есть идея, как опосредовано получить информацию. Не очень однозначно получается, но хоть что-то

Идея основана на следующих допущениях
  1. Таблица, на основании которой создали наследников, имеет поле InstanceRelationType
  2. Поля этой таблицы, которые были созданы в таблицах-наследниках, могут принимать значение Null
  3. Таблица-наследник физически не существует в базе данных

Тогда логика такая

1. Ищем все таблицы, у которых есть поле InstanceRelationType. Это таблицы, по которым были созданы таблицы-наследники

К сожалению, просто посмотреть список значений в поле InstanceRelationType - недостаточно, поскольку там записывается Id той таблицы, где запись была создана. В некоторых таблицах записи просто не создаются.

Например, в таблице OMInternalOrganization. Хотя она прямой родитель CompanyInfo, но нет ни одной записи DirPartyTable, где InstanceRelationType равно Id этой таблицы


2. Отбираем все поля, которые могут иметь значение Null

Можно просто "все" поля, но так уменьшим объемы выборки. Тут, конечно, могут "помешать" контейнерные поля, которые имеют значение Null и без наследования, но это выяснится позже


3. В базе данных модели в таблице [ModelElement] ищем записи по этим полям (по имени поля) и смотрим, какое у них значение в поле ParentId. Это будет ссылка на ту таблицу-наследник, в которой это поле было физически создано

Можно здесь сразу закончить анализ, если поле ссылаются на одну из таблиц, код которой есть в поле InstanceRelationType анализируемой таблицы-родителя


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

Есть, конечно, риск совпадения имен полей в разных таблицах-наследниках, но не проверял, насколько это частое явление


Это идея. Как это реализовать в виде запросов - не проверял. Но, вроде бы, все реализуемо
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: Logger (3).