Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Каскадное удаление связанных записей  (Прочитано 16230 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Len
Гость
« : 05-10-2007 10:57 » 

Кто знает, как при удалении строки из главной таблицы автоматически удалить связанные с ней записи в подчиненной таблице?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 05-10-2007 11:10 » 

построить список/дерево подчиненных записей и удалить
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Len
Гость
« Ответ #2 : 05-10-2007 11:25 » 

Мне нужно на форме отобразить список строк из главной таблицы, а подчиненную таблицу на форму не хочется выводить. Как быть в таком случае?
« Последнее редактирование: 05-10-2007 11:28 от Len » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 05-10-2007 11:38 » 

не хочется - не выводи Улыбаюсь - можешь вывести надпись -"Есть подчиненные записи", если хочешь Улыбаюсь
да в общем-то и не надо.
Помечаешь запись на удаление - тыкаешь в кнопку (функция удаления), но строишь список подчиненных записей, и сначала удаляешь подчиненных, а затем и основную
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Len
Гость
« Ответ #4 : 05-10-2007 12:41 » 

Способ не плохой, но все же кто-нибудь знает, как можно использовать свойство CONSTRAINT для таблиц, чтобы все же при удалении строки из master-таблицы строкуи в detail-таблице удалялись автоматически.
Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 05-10-2007 12:56 » 

Цитата
как можно использовать свойство CONSTRAINT для таблиц
При чем тут Delphi?
Записан

С уважением, Oldy.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #6 : 05-10-2007 13:34 » new

Констрейны, я как знаю. Предназначены для ограничений значений в водимых строках таблици. При удалении они ни как не влияют. Может быть имелось ввиду Foreign key все таки.
Хотелось бы узнать, какой SQL сервер используется?
В MS SQL я видел фичу каскадного удаления данных. Но в книжках не рекомендовалось делать "опасные операции", такие как удаление на автомате. Я бы сделал хранимую процедуру, в которой бы просто прописал бы SQL скрипт, который бы удалял записи со всех связанных таблиц. И затем с корня. И еше бы там бы применил бы транзакцию. Так при изменении структуры таблици, не нужно переписывать код программы. Только хранимую процедуру.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
zubr
Гость
« Ответ #7 : 05-10-2007 14:34 » 

Вот пример, недавно реализовывал в MS SQL:
Код:
create table aistrans.dbo.ru_Strana
(
codStrana decimal PRIMARY KEY NOT NULL IDENTITY(1,1),
nameStrana varchar(225) NOT NULL default ''
)


create table aistrans.dbo.ru_Region
(
        codRegion decimal PRIMARY KEY NOT NULL IDENTITY(1,1),
        nameRegion varchar(225) NOT NULL default '',
        nameOblcentr varchar(225) NOT NULL default '',
        codStrana decimal NOT NULL REFERENCES ru_Strana(codStrana)
        ON UPDATE CASCADE ON DELETE CASCADE
)
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines