Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Вниз

каскадное обновление и удаление данных   Найти похожие ветки 

 
garry_c   (2004-06-24 09:43) [0]

Здравствуйте я работаю на Delphi 2.0. Подскажите пожалуйста как организовать каскадное удаление записей в связных таблицах. В IBExpert-е при создании внешнего ключа можно поставить соотвествующие флажки, но тогда ключ вообще не создается. Пробовал прописывать вручную через SQL - тоже эффект.


 
Курдль ©   (2004-06-24 09:46) [1]

Лучший вариант - вручную. Т.е. delete - команда на удаление подчиненных записей, потом - на удаление ключевой.

ЗЫ: А откуда такой раритет: Delphi 2.0?    :)


 
Johnmen ©   (2004-06-24 09:47) [2]

>...тогда ключ вообще не создается.

Значит что-то не так у тебя...

>Пробовал прописывать вручную через SQL - тоже эффект.

Значит пробовал не так...


 
Соловьев ©   (2004-06-24 09:49) [3]


> Пробовал прописывать вручную через SQL - тоже эффект.

Какая ошибка?

> Лучший вариант - вручную.

триггер наверное имел автор совета.
ИМХО, лучше использовать ситемные трггеры.


 
Курдль ©   (2004-06-24 09:54) [4]


> триггер наверное имел автор совета.
> ИМХО, лучше использовать ситемные трггеры.

Я имел в виду удаление вообще на клиенте т.к. речь велась о связанных таблицах, а не о древовидных структурах. А для последних и вправду лучше триггер, причем собственный, а не стстемный (он может учитывать особенности бизнес-процессов, заложенных в БД).


 
Соловьев ©   (2004-06-24 10:00) [5]


> Я имел в виду удаление вообще на клиенте т.к. речь велась
> о связанных таблицах, а не о древовидных структурах

не обязательно связаные таблицы это древовидные.

> Я имел в виду удаление вообще на клиенте

а вот это уже не надо, так как противречит бизнес-логике.


 
Курдль ©   (2004-06-24 10:10) [6]


> Соловьев ©   (24.06.04 10:00) [5]
> > Я имел в виду удаление вообще на клиенте
> а вот это уже не надо, так как противречит бизнес-логике.

Это с какого перепугу? Это не противоречит даже целостности данных, т.к. последние защищены механизмом внешних ключей!


 
Соловьев ©   (2004-06-24 10:19) [7]

пишут 2 программера - один удалит, другой забыл...А если реализовать данную логику на уровне БД, то пофиг кто пишет.


 
Курдль ©   (2004-06-24 10:24) [8]


> Соловьев ©   (24.06.04 10:19) [7]
> пишут 2 программера - один удалит, другой забыл...А если
> реализовать данную логику на уровне БД, то пофиг кто пишет.

Мало ли что программист забыл - это никакой логике не подчиняется. Главное, что логика хранения данных не будет нарушена.
Зато если даже такие пустяки возлагать на триггеры БД - переносимость программы на другую СУБД станет... непереносимой! :)


 
Соловьев ©   (2004-06-24 10:28) [9]

все покажет практика :) И это не пустяки


 
Sergey13 ©   (2004-06-24 10:36) [10]

2Курдль ©   (24.06.04 10:24) [8]
А зачем переносить на другую БД. Ты часто переносишь? ИМХО, такой перенос сродни полному перепроектированию всего и БД и прикладных прог.

Мои приоритеты такие (в порядке уменьшения хорошести 8-)
1.Стандартный констрейнт.
2.Тригер
3.Прикладная программа

2garry_c   (24.06.04 09:43)  
Ты наверное кнопочки не так нажимал, потому и не получилось. Или из-за древности инструментов проблемы. А мужики раздерутся скоро на теоретической почве. 8-)


 
garry_c   (2004-06-25 17:40) [11]

Спасибо всем! Я в самом деле в конце концов записал вручную два последовательных запроса. Хотя мне казалось, что существуют инструменты более высокого уровня.


 
Курдль   (2004-06-25 18:17) [12]


> Sergey13 ©   (24.06.04 10:36) [10]
> А зачем переносить на другую БД. Ты часто переносишь? ИМХО,
> такой перенос сродни полному перепроектированию всего и
> БД и прикладных прог.

Одного переноса хватило, чтобы раз и навсегда заречься писать бизнес-логику на сервере. А получается это элементарно - на старый рабочий проект нарисовывается новый клиент и говорит: "MS SQL - это Аццтой! Мы хотим на Оракле!".
Кроме того, одно дело - найти логическую ошибку (или чуток поменять логику) в цепочке из десятка-другого функций делфёвого исходника, а другое - когда это десяток разбавлен еще и десятком серверных процедур.


 
Johnmen ©   (2004-06-25 22:09) [13]

>garry_c  (25.06.04 17:40) [11]

Они действительно существуют. И придуманы не просто так.
А рассуждения Курдль  (25.06.04 18:17) [12] запросто приводят к нарушению целостности данных. Но видимо ему важнее "переносимость", чем целостность...:)


 
Курдль   (2004-06-25 22:21) [14]


> Johnmen ©   (25.06.04 22:09) [13]
> А рассуждения Курдль  (25.06.04 18:17) [12] запросто приводят
> к нарушению целостности данных. Но видимо ему важнее "переносимость",
> чем целостность...:)

Интересно, из какой это части "рассуждения Курдль  (25.06.04 18:17) [12]" следуют такие выводы? Там вроде ясно написано "...заречься писать бизнес-логику". Именно бизнес-логику, а не поддержку целостности.
В нашем конкретном случае (удаление записей из связанных таблиц) работа 2-мя запросами от клиента никак не нарушит целостности данных даже при выполнении элементарных правил РБД - создания внешних ключей для связанных таблиц.


 
Johnmen ©   (2004-06-26 02:18) [15]

>Курдль  (25.06.04 22:21) [14]
>работа 2-мя запросами от клиента никак не нарушит целостности данных

Да ? Уверен ?
А я могу запросто 2-мя запросами порушить целостность. Если твоя б.-л. не учитывает ссылочную целостность...
Или ты считаешь, что ссылочная целостность не есть часть б.-л. ?
:)


 
Курдль   (2004-06-27 20:07) [16]


> Или ты считаешь, что ссылочная целостность не есть часть
> б.-л. ?

Если честно, не считаю. Не буду спорить "по понятиям", но я под бизнес-логикой имел в виду логику автоматизируемого процесса.
Повторяю, - достаточно защитить "связку" таблиц при помощи foreign key и тогда порушить целостность сможет только админ и только при помощи drop...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.033 c
3-1087995468
peypivo
2004-06-23 16:57
2004.07.18
firebird


6-1085218415
trix
2004-05-22 13:33
2004.07.18
Как сменить сетевую итендификацию ?


1-1088578522
intruder
2004-06-30 10:55
2004.07.18
Создание собрата Paint


14-1088593532
Piter
2004-06-30 15:05
2004.07.18
Иконки для программы


1-1088752276
borow
2004-07-02 11:11
2004.07.18
Ищу компонент





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