Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2010, 15:51   #1
buriat
Форумчанин
 
Регистрация: 28.06.2010
Сообщений: 189
По умолчанию Удаление из таблиц

Есть, например, 3 таблицы:

Table1
(PK)ID *

Table2
(PK)ID
(FK)Table1_ID

Table3
(PK)ID*
(FK)Table2_ID

Между ними установлены связи (видно какие).
Удаляем запись из Table1. Одновременно должны удалиться записи из Table2 и Table3, которые связаны между собой. Как это сделать кратчайшим способом?

Спасибо.
buriat вне форума Ответить с цитированием
Старый 20.11.2010, 17:42   #2
Dj_SheLL
Форумчанин
 
Аватар для Dj_SheLL
 
Регистрация: 14.10.2009
Сообщений: 128
По умолчанию

Ы
Одновременно они по-любому удаляться не будут,если это MS SQL.
Допустим есть три таблицы Table1->Table2->Table3.Стрелочки-это связи между ними.Так вот вначале удаляешь третью,потом вторую,а потом первую.Всё в одном запросе,ну если угодно можно либо в триггере на удаление замутить или в процедуре.
Dj_SheLL вне форума Ответить с цитированием
Старый 20.11.2010, 17:42   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как это сделать кратчайшим способом?
Описать триггеры на удаление. Описание зависит от структуры и СУБД.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2010, 17:56   #4
buriat
Форумчанин
 
Регистрация: 28.06.2010
Сообщений: 189
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Описать триггеры на удаление. Описание зависит от структуры и СУБД.
Как бы это выглядело используя TTable или TQuery? таблица Paradox, если вы об этом...
buriat вне форума Ответить с цитированием
Старый 20.11.2010, 18:11   #5
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

ну поидее на связь накладывается ссылочное ограничение целостности cascade. В foxpro, например, нажимаешь на ссылку и выбираешь это ограничение. Как в парадоксе не знаю
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 20.11.2010, 19:57   #6
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Проще всего (чтобы обойтись без циклов) добавить в таблицу
Table3 еще одно поле Table1_ID
А потом
Код:
'delete from Table3 where Table1_ID = '+Table1Id.Text;
'delete from Table2 where Table1_ID = '+Table1Id.Text;
Или написать один раз триггер и забыть, как написал Stilet. О триггерах читай литературу.
_SERGEYX_ вне форума Ответить с цитированием
Старый 20.11.2010, 20:08   #7
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

я сомневаюсь что в парадоксе есть триггеры
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 20.11.2010, 20:22   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Верно, их там нет.
Поэтому делать нужно "ручками", как подсказал _SERGEYX_.
Вроде бы ничего сложного...
mihali4 вне форума Ответить с цитированием
Старый 20.11.2010, 20:34   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
я сомневаюсь что в парадоксе есть триггеры
Парадокс в том что в Парадоксе много парадоксов
Цитата:
buriat
Тебе придется писать достаточно непростой запрос, или непростой цикл по удалению связываемых полей...
Умеешь составлять команды SQL запроса на удаление?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2010, 20:43   #10
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

слушайте, а наложить ограничение на связь разве нельзя?
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление из нескольких таблиц qwerty1301 Microsoft Office Access 17 05.05.2010 11:34
Удаление записи в одной из двух таблиц ViNcHeStEr БД в Delphi 1 03.04.2010 12:04
SQL и Python - удаление/вставка таблиц и эл-ов, доступ к БД Graf Xandr Фриланс 2 24.02.2010 01:52
Удаление повторной информации из таблиц paratruper17 Microsoft Office Word 8 03.11.2009 10:31
Каскадное удаление и модификация таблиц Абдуллаев Рустам БД в Delphi 6 01.05.2009 20:47