Текущий архив: 2004.03.14;
Скачать: CL | DM;
ВнизКаскадное удаление в Delphi, Interbase Найти похожие ветки
← →
Andrew2004 (2004-02-12 07:33) [0]Есть база, работающая через InterBase. В этой базе возьмем 3 таблицы: "Инвентарные номера", "Книги", "Авторы". Так вот, допустим, я удаляю запись из таблицы "Авторы" -> тогда надо удалить все записи из таблицы "Книги", которые ссылаются на удаленного автора, этих книг может быть много -> но и из таблицы "Инв. номера" надо удалить все инвентарные номера, которые содержат ссылку на удаляемую книгу, этих инвентарных номеров также может быть очень много. Т.е. между талицами "Инв. номера" и "Книги" отношение "1-ко-мног.", а между "Книги" и "Авторы" - "мног.-ко-мног.". Как в этом случае реализовать каскадное удаление.
Вот такая заморочка :)).
Естественно это можно сделать длинным способом. Но как это сделать покороче SQL-запросами?
Спасибо всем, кто ответит!!!
← →
Вованчик (2004-02-12 08:26) [1]триггеры на удаление написать в каждой таблице
← →
Sergey13 (2004-02-12 08:27) [2]А зачем вообще удалять автора? Цензура? 8-)
Авторы в твоем случае - это типичный справочник, а удалять из справочника - дурной тон. Списывать (удалять) надо только книги.
ИМХО.
← →
Deniz (2004-02-12 08:32) [3]Если в базе правильно прописаны внешние ключи по связям:
alter table Книги
add constraint FK_Книги
foreign key (ID_Автора)
references Авторы(ID)
on delete CASCADE
то вообще ничего делать не надо, все само собой удаляется.
Но можно и триггер повесить на таблицу.
create trigger Авторы_BD before delete position 0 as
begin
delete from Книги where Книги.ID_Автора = old.ID
end
ID - пк для авторов в табл Авторы
← →
Johnmen (2004-02-12 09:29) [4]>Т.е. между талицами "Инв. номера" и "Книги" отношение "1-ко-мног.",
Т.е. один инв. номер для нескольких книг ???
← →
Вованчик (2004-02-12 09:32) [5]
> Johnmen © (12.02.04 09:29) [4]
наоборот - для одной книги несколько инвентарных номеров
← →
Johnmen (2004-02-12 09:39) [6]>Вованчик © (12.02.04 09:32) [5]
В данном контексте это "мног.-ко-1"
:)
← →
Вованчик (2004-02-12 09:43) [7]:)
← →
Anatoly Podgoretsky (2004-02-12 09:48) [8]Sergey13 © (12.02.04 08:27) [2]
Автор умер, книги в печку.
← →
Andrew (2004-02-12 20:31) [9]Всем спасибо... И за юмор тоже... :))
Если есть еще дельные предложение - пишите.
За дельный ответ - отдельное спасибо Deniz(у)©... :))
Страницы: 1 вся ветка
Текущий архив: 2004.03.14;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.014 c