Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];

Вниз

Есть ли в Paradox каскадное удаление?   Найти похожие ветки 

 
__alex ©   (2006-05-08 19:24) [0]

Берем 2 таблицы (Paradox 7), связываем их по некому полю отношением один-ко-многим. Update rule выбираем Cascade. И потом пытаемся удалить запись из главной (master) таблицы.
Если при этом в подчиненной таблице существует одна или несколько записей, соответствующих выбранной в главной таблице записи, то получаем такую ошибку:
Master has detail records. Cannot delete or modify.
Я что то делаю не так или в paradox и правда нет возможности каскадного удаления?


 
mike-d ©   (2006-05-08 19:34) [1]


> Есть ли в Paradox каскадное удаление?

Нет. Есть только каскадный UPDATE.


 
__alex ©   (2006-05-08 20:19) [2]

Тогда такой вопрос. В описаном выше случае где одна мастер-таблица и одна подчиненная, каскадное удаление можно организовать простеньким sql-запросом вроде
DELETE FROM detailTable WHERE Id=...
ну и потом удаление записи в мастер-таблице.
Но че делать если у нас например 3 или более таблиц:
table1 (master-detail) table 2 (master-detail) table3
и надо удалить запись из "самой главной" таблицы table1? Че то на ум ничего хорошего не приходит кроме перелопачивания всех записей в рекурсии. А никак это попроще нельзя сделать? Ну не обязательно sql-запросом, может другое какое решение есть?


 
mike-d ©   (2006-05-08 22:53) [3]


> на ум ничего хорошего не приходит кроме перелопачивания
> всех записей


Ничего и не придет наверное больше :)

Повесь удаление detail"ов на BeforeDelete master-таблицы - примерно так:

procedure Data.Table1BeforeDelete(...);
begin
 Table2.First;
 while not Table2.Eof do Table2.Delete;
end;

procedure Data.Table2BeforeDelete(...);
begin
 Table3.First;
 while not Table3.Eof do Table3.Delete;
end;


 
__alex ©   (2006-05-08 23:17) [4]

Угу, ты прав, mike-d... Блин, неудобно все это...



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

Форум: "Базы";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.009 c
15-1149290295
Копир
2006-06-03 03:18
2006.07.02
Lib.ru запретили


15-1149402157
Servelat
2006-06-04 10:22
2006.07.02
Вопросы наСИльникам :)


2-1149706067
Alextp
2006-06-07 22:47
2006.07.02
Определить моноширинный шрифт


15-1149758569
Der Nechk@ssoff
2006-06-08 13:22
2006.07.02
Умер Арнольд Ньюман


2-1149862619
Ladan
2006-06-09 18:16
2006.07.02
MediaPlayer and TrackBar





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский