![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как удалить записи [D7, MSSQL]
apl © (2006-05-30 08:46:00)Есть достаточно сложная база данных, пара сотен таблиц, представления, десятки процедур. Необходимо удалить некоторые записи. Если у записи в главной таблице нет подчиненных записей вообще, то запись удаляется при помощи ADOCommand. Если подчиненные записи есть, то не удаляет. Причем кол-во подчиненных записей есть не во всех таблицах.
Как вычислить (определить) все таблицы в которых нужно удалять записи, и, я подозреваю, что удалять нужно в определенном порядке от подчиненных таблиц к основной.
ЮЮ (2006-05-30 10:59:00) [1]В EM создаешь диаграму, кидаешь нужную таблицу, задаешь нужный уровень вложенности и начинаешь разгребать таблицы, улавливая бизнес-логику.
Sergey13 (2006-05-30 10:50:00) [2]2[4] apl (30.05.06 10:42)
>а если разгребаешь чужое наследство?
То выгодно воспользоваться CASE инструментами типа ERWin и реинжинирингом базы.
apl (2006-05-30 10:42:00) [3]так мне и надо восстановить эту бизнес-логику
В своих разработках понятно гораздо проще, а если разгребаешь чужое наследство?
ЮЮ (2006-05-30 09:41:00) [4]и, я подозреваю, что удалять нужно в определенном порядке от подчиненных таблиц к основной.
А я подозреваю, что удалять можно только в соответствии с бизнес-логикой.
Если где-то в справочнике нашлась корявая запись вовсе не следует, что нужно убивать записи в другой таблице, которые на неё сослались. Ну а если именно бизнесс-логика требует такого удаления, то следует знать и помнить структуру БД и прописать удаление связанных записей хоть в процедурах, хоть в триггерах, а не строит универсального убийцу записей.
apl (2006-05-30 09:35:00) [5]А где в системных таблицах-то посмотреть что от чего зависит?
ORMADA (2006-05-30 08:55:00) [6]через системные таблицы посмотри зависимости таблиц
НО! лучше делать это самому т.к. непонятно куда могу привести такие КАСКАДНЫЕ удаления!
сделай сторпроц и вызывай его с необходимыими параметрами...
главное не забудь про транзанкцию
т.к. удалять надо всё сразу или ничего!
>то запись удаляется при помощи ADOCommand
хошь удалю при помощи АдоКвери?
ExecSql есть и в квери и в команд!
>я подозреваю, что удалять нужно в определенном порядке от подчиненных таблиц к основной.
правильно мыслишь!