![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление записей из связанных таблиц [D7]
Андрей (начинающий) © (2009-04-19 12:45:00)Есть 2 таблицы. Связь "Один ко многим" (т.е. одной записи первой таблицы соответствуюет множество записей во второй). Как правильно удалять запись из первой табл. и соответствующие ей записи второй?
Таблицы не индексированы. Что лучше использовать: Locate или Next?
ТД (2009-04-25 17:06:00) [1]
> MsGuns © (25.04.09 16:30) [47]
а разве это не важно в контексте взаимопонимания?
или если я скажу, что пользую БДЕ, вы мне подскажите, как правильно написать запрос?
вот то то и оно
AndreyV (2009-04-25 17:01:00) [2]> [43] ТД (25.04.09 15:16)
> > AndreyV © (25.04.09 03:11) [39]
> вы сами то по ссылки ходили? читали?
> или как обычно?
Мне это не особенно интересно. Но неужто ничего нет?
MsGuns (2009-04-25 16:30:00) [3]В смысле что Volga это не СУБД, а лишь "движок" с библиотеками ?
И что это меняет в контексте сабжа ?
ТД (2009-04-25 16:18:00) [4]
> MsGuns © (25.04.09 15:27) [45]
> и что ?
потеряли нить разговора? бывает
см.пост [37], [38]
MsGuns (2009-04-25 15:27:00) [5]>ТД (25.04.09 15:16) [43]
>вы сами то по ссылки ходили? читали?
Ну, я сходил, например сюда
http://www.realcoding.net/downloads/view/1989
и что ?
MsGuns (2009-04-25 15:25:00) [6]И еще вдогонку к [42] вынужден в 389-й противный раз:
Замысливая написать "базовую" программу, нужно вдолбить себе в голову, что разработка проектов такого рода весьма непростая вещь и требует серьезных знаний и навыков, а в случае отсутствия их - и достаточно приличного времени и усилий по их приобретению. Учебники типа Фаронова,Архангельского и Co следует сжечь как вредные и забыть все, что в них написано.
И еще одна характерная ошибка начинающих "спесилистов" по базам - полное пренебрежение к предметной области. Редко кто из "самоделкиных" считает необходимым прежде чем писать, например, складскую программу, разобраться в специфике складского (я уже молчу о бухгалтерском) учета, вникнуть в реальный документооборот, подробнейшим образом разобраться в отчетности и т.д. Да хотя бы просто подробно побеседовать о предмете с завскладом Иваногуричем или товароведом Марьсеменной.
Отсюда и рождаются подобные вопросы или, того хуже, программки-уродцы, многие из которых так и помирают не родившись, а другие, что много печальнее, живут как те парализованные больные: и выкинуть не выкинешь, и мучаются с ними до самой смерти все "домочадцы".
ТД (2009-04-25 15:16:00) [7]
> AndreyV © (25.04.09 03:11) [39]
> Вестимо где:
> http://yandex.ru/yandsearch?text=VolgaDB&stpar2=%2Fh0%2Ftm2%2Fs2&stpar4=%2Fs2
вы сами то по ссылки ходили? читали?
или как обычно?
MsGuns (2009-04-25 15:11:00) [8]>Андрей (начинающий) (25.04.09 12:27) [41]
>> В этой ДБ (коли нет транзакций) будет ещё хуже.
>А что подразумевается под "еще хуже"?
Хуже в данном контексте значит тот факт, что данная СУБД (Volga4) не поддерживает транзакции, из чего следует что существует достаточно высокая вероятность того, что при попытке удаления, скажем, 2 записей, будет удалена только одна из них. При этом в случае оперативного обнаружения ошибки (т.е. непосредственно при попытке удалить 2-ю запись) нет возможности возврата базы в "исходное" состояние (в нашем случае - восстановить первую, как бы удаленную, запись). Другими словами, весь контроль за ПАКЕТОМ изменений в БД, равно как и возврат базы в начальное состояние в случае невозможности выполнения изменений всего ПАКЕТА, целиком и полностью лежит на советси ПРИКЛАДНОЙ программы.
SQL-серверы, к которым никоим образом не относится Ваша Волга, поддерживают транзакции, более того, эта "фича" является одной из основных качеств скл-сервера.
>> Хотя я бы в ХП обернул
>> а вот в триггер - ни боже мой.
>Переведите, плиз, на обычный язык или киньте ссылочки, где почитать об >этом :)
"Ну что Вам рассказать про Сахалин ?" (с) ;)
Читайте, изучайте - и обрящете. Литературы море разливанное, в т.ч. и в делфишной справке.
Андрей (начинающий) (2009-04-25 12:27:00) [9]
> AndreyV © (25.04.09 00:04) [37]
</I
> В этой ДБ (коли нет транзакций) будет ещё хуже.
>
А что подразумевается под "еще хуже"?
PS: я не проф.программист, а начинающий любитель :), поэтому выражаюсь,может быть, не совсем понятным языком для "профи".
Меня поставили в тупик высказывания:
[19]
> Хотя я бы в ХП обернул
[29]
> а вот в триггер - ни боже мой.
Переведите, плиз, на обычный язык или киньте ссылочки, где почитать об этом :)
Anatoly Podgoretsky (2009-04-25 11:32:00) [10]> ТД (25.04.2009 0:41:38) [38]
Старая, особенность, что все данные загружаются в память.
AndreyV (2009-04-25 03:11:00) [11]> [38] ТД (25.04.09 00:41)
> > AndreyV © (25.04.09 00:04) [37]
> > VolgaDB [4]
>
> это что за бд? новая секретная разработка пентагона?
> где про неё прочитать?
Вестимо где:
http://yandex.ru/yandsearch?text=VolgaDB&stpar2=%2Fh0%2Ftm2%2Fs2&stpar4=%2Fs2
ТД (2009-04-25 00:41:00) [12]
> AndreyV © (25.04.09 00:04) [37]
> VolgaDB [4]
это что за бд? новая секретная разработка пентагона?
где про неё прочитать?
AndreyV (2009-04-25 00:04:00) [13]> [36] ТД (24.04.09 23:27)
> прочитал ветку. а что за бд кто-нибудь скажет? ну кроме
> автора, ибо он не в курсе, как видно
VolgaDB [4]
> [35] Андрей (начинающий) (24.04.09 23:06)
>
> > AndreyV © (24.04.09 21:08) [34]
> > ... но есть ощущение, что автор не понимает, что делает.
>
> Почему? :) Я понимю, что при возникновении ошибки в какскадном
> удалении без возможности отката, разрушатся связи между
> таблицами.
В этой ДБ (коли нет транзакций) будет ещё хуже.
ТД (2009-04-24 23:27:00) [14]ветку не читал, но "что при возникновении ошибки в какскадном удалении без возможности отката, разрушатся связи между таблицами." звучит как бред
зы
прочитал ветку. а что за бд кто-нибудь скажет? ну кроме автора, ибо он не в курсе, как видно
Андрей (начинающий) (2009-04-24 23:06:00) [15]
> AndreyV © (24.04.09 21:08) [34]
> ... но есть ощущение, что автор не понимает, что делает.
Почему? :) Я понимю, что при возникновении ошибки в какскадном удалении без возможности отката, разрушатся связи между таблицами.
Но, т.к. я пока не планирую давать пользователю права на удаление записей таблиц и сами таблицы не слишком большие, то на данном этапе меня устроит [27].
AndreyV (2009-04-24 21:08:00) [16]> [32] Юрий Зотов © (24.04.09 15:30)
> > AndreyV © (24.04.09 10:01) [30]
>
> Вынужден обратить Ваше внимание на постскриптум в [18].
> :o)
Конечно, Юрий, постскриптум я помню, но есть ощущение, что автор не понимает, что делает.
clickmaker (2009-04-24 16:25:00) [17]> ведь иначе не сможет добится своей цели - удалить из справочника
а нефиг удалять из справочника.
если какие-то записи там уже не нужны, на них могут быть ссылки, скажем, в архивах, которые используются для статистики, отчетности и т.п.
можно ввести поле Active или Visible, при запросе фильтровать.
Юрий Зотов (2009-04-24 15:30:00) [18]> MsGuns © (24.04.09 09:24) [29]
> AndreyV © (24.04.09 10:01) [30]
Вынужден обратить Ваше внимание на постскриптум в [18].
:o)
Андрей (начинающий) (2009-04-24 13:32:00) [19]
> Anatoly Podgoretsky © (23.04.09 21:37) [27]
спасибо :)
AndreyV (2009-04-24 10:01:00) [20]> [29] MsGuns © (24.04.09 09:24)
> Поддерживаю Егу на счет "вредности" каскадных удалений на
> уровне бизнес-логики. В конкретном приложении с аккуратной
> логикой и "заворачиванием" удалений в транзакции - пожалуйста,
> а вот в триггер - ни боже мой. Чревато Чернобылем для БД.
Да, пользователь будет склонен отвечать подтверждением на удаление, ведь иначе не сможет добится своей цели - удалить из справочника. Правильней не давать удалять с объяснением причины, и, возможно, с открытием соответсвующих форм со связными данными, но чтобы действия были осознанные.
Конечно могут быть какие-то некритические или рассчитанные, к примеру, на основе других, данные - тут и каскадом можно.