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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Каскадное удаление связанных записей  (Прочитано 13342 раз)
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 » 

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

Не будите спашяго дракона.
             Джаффар (Коша)
zubr
Модератор

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

« Ответ #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