Вниз
Скачать: CL | DM;

Как удалить записи   Найти похожие ветки 

← →
apl   (2006-05-30 08:46) [0]

Есть достаточно сложная база данных, пара сотен таблиц, представления, десятки процедур. Необходимо удалить некоторые записи. Если у записи в главной таблице нет подчиненных записей вообще, то запись удаляется при помощи ADOCommand. Если подчиненные записи есть, то не удаляет. Причем кол-во подчиненных записей есть не во всех таблицах.
Как вычислить (определить) все таблицы в которых нужно удалять записи, и, я подозреваю, что удалять нужно в определенном порядке от подчиненных таблиц к основной.


← →
ORMADA ©   (2006-05-30 08:55) [1]

через системные таблицы посмотри зависимости таблиц
НО! лучше делать это самому т.к. непонятно куда могу привести такие КАСКАДНЫЕ удаления!

сделай сторпроц и вызывай его с необходимыими параметрами...
главное не забудь про транзанкцию
т.к. удалять надо всё сразу или ничего!

>то запись удаляется при помощи ADOCommand
хошь удалю при помощи АдоКвери?
ExecSql есть и в квери и в команд!

>я подозреваю, что удалять нужно в определенном порядке от подчиненных таблиц к основной.
правильно мыслишь!


← →
apl   (2006-05-30 09:35) [2]

А где в системных таблицах-то посмотреть что от чего зависит?


← →
ЮЮ ©   (2006-05-30 09:41) [3]

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

А я подозреваю, что удалять можно только в соответствии с бизнес-логикой.
Если где-то в справочнике нашлась корявая запись вовсе не следует, что нужно убивать записи в другой таблице, которые на неё сослались. Ну а если именно бизнесс-логика требует такого удаления, то следует знать и помнить структуру БД и прописать удаление связанных записей хоть в процедурах, хоть в триггерах, а не строит универсального убийцу записей.


← →
apl   (2006-05-30 10:42) [4]

так мне и надо восстановить эту бизнес-логику
В своих разработках понятно гораздо проще, а если разгребаешь чужое наследство?


← →
Sergey13 ©   (2006-05-30 10:50) [5]

2[4] apl   (30.05.06 10:42)
>а если разгребаешь чужое наследство?
То выгодно воспользоваться CASE инструментами типа ERWin и реинжинирингом базы.


← →
ЮЮ ©   (2006-05-30 10:59) [6]

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.033 c
4-1145001460
Elen
2006-04-14 11:57
2006.08.06
Процессы приложений


4-1145014299
Sinka
2006-04-14 15:31
2006.08.06
Задний фон на TCustomObject (в частности на TTreeView)


15-1151988491
syte_ser78
2006-07-04 08:48
2006.08.06
Forex


2-1153299112
Crazy monkey
2006-07-19 12:51
2006.08.06
Учет пользователей


15-1152629899
SergP.
2006-07-11 18:58
2006.08.06
KAV + WINXP = проблемы




   Наверх