Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.012 c
6-43717
|e0|0uP
2004-01-07 19:06
2004.03.14
ClientSocket.Socket.SendTex( );


1-43442
Archi Gudvin
2004-03-01 08:17
2004.03.14
Помогите пожалуйста. Как вычслить номер недили текущего года


14-43831
SPeller
2004-02-13 13:54
2004.03.14
Кто юзает Total Commander


14-43845
Knight
2004-02-21 10:56
2004.03.14
У The Bat а есть нормальные версии или они все такие глючные?


1-43480
Pa5ha
2004-02-29 16:01
2004.03.14
Файлы в папке.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский