Форум: "Базы";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
ВнизПроблема с Update blob-поля Найти похожие ветки
← →
Val © (2005-10-12 17:27) [40]>Seg (12.10.05 17:15)
представим, есть табличка
accountid amount
1 100
2 200
3 300
задача - запомнить остаток, ликвидировать счет 1 (здесь - простое удаление), остаток перенести на счет 3 (именно в такой последовательности, неважно почему - просто пример).
вопрос: скажите, что произойдет с сотней, если после удаления , подтвержденного коммитом произойдет эксепшн?
← →
Seg (2005-10-12 17:53) [41]Почему не сделать в правильной последовательности?
1.Запомнить остаток
2.Перенести остаток на счет 3
3.Удалить счет 1
4.COMMIT
← →
Val © (2005-10-12 17:55) [42]не увиливайте, ответьте пожалуйста
← →
ANB © (2005-10-12 17:57) [43]
> Seg (12.10.05 17:53) [41]
Хе, коммит то все равно в конце. А есть случаи и более сложные. Например : по количественной проводке по таблице настроек генерим кучу суммовых. На последней выяснем, что из-за, например, недостатка денег на счету, не можем выполнить операцию. Конечно, можно гулять 2 раза - сначала проверки, потом запросы. Но это не снимает проблему ошибки сервера. Да и код длиннее и менее логичен.
← →
Seg (2005-10-13 10:48) [44]не увиливайте, ответьте пожалуйста
Это не увиливание от ответа, это выпрямление кривых процедур.
← →
Sergey13 © (2005-10-13 10:53) [45]2[44] Seg (13.10.05 10:48)
Вопрос был про коммиты в процедурах. Если в [41] Seg (12.10.05 17:53) 1,2,3 - это такие отдельные процедуры с коммитами, что будет если глюк?
← →
Seg (2005-10-13 10:53) [46]Да и код длиннее и менее логичен
Я бы посоветовал сначала определить максимально оптимальное решение задачи, а уж потом написать простой и безотказный код.
Но многие предпоситают не думать, а писать килотонны кода, в котором сами потом не смогут разобраться.
← →
Seg (2005-10-13 10:56) [47]1,2,3 - это такие отдельные процедуры с коммитами
Это одна процедура.
Кстати, при желании пункты 1 и 2 можно выполнить одним запросом и если глюк, то сделать RollBack, если нет, то выполнить остальные пункты.
← →
ANB © (2005-10-13 10:58) [48]
> Seg (13.10.05 10:53) [46]
- прежде чем что то советовать, нужно что написать самому. Например бухгалтерию, успешно конкурирующую с 1С. А пока слушать советы не раз наступавших на грабли.
Не от хорошей жизни не рекомендуется :
- использовать коммит и обычный роллбэк в процедурах
- использовать DML в функциях
← →
Sergey13 © (2005-10-13 11:01) [49]2[47] Seg (13.10.05 10:56)
Вилять продолжаем. 8-)
Ну а если такую процедуру надо больше 1 раза запустить? И при этом или все или ничего?
← →
Seg (2005-10-13 11:13) [50]Ну а если такую процедуру надо больше 1 раза запустить? И при этом или все или ничего?
А может перестанете кривляться и опишете всю задачу сразу?
← →
Seg (2005-10-13 11:14) [51]бухгалтерию, успешно конкурирующую с 1С
Ну в Вам, то это удалось?
← →
Sergey13 © (2005-10-13 11:21) [52]2[50] Seg (13.10.05 11:13)
>А может перестанете кривляться
Какой ты грубый.
>и опишете всю задачу сразу?
Обеспечить целостность данных при множественном вызове модифицирующих процедур.
← →
Seg (2005-10-13 11:37) [53]Это не задача, а общее требование к системе, причем к любой системе.
← →
Sergey13 © (2005-10-13 11:43) [54]2[53] Seg (13.10.05 11:37)
И это требование к системе должно обеспечиваться каждый раз в любой задаче. А если писать коммиты в каждой процедуре, то обеспечить это требование с использованием этих процедур невозможно в ряде случаев.
← →
Seg (2005-10-13 11:54) [55]невозможно в ряде случаев.
А вот эти случаи надо максимально избегать на этапе проектирования.
Если этого избежать невозможно, то можно и не писать коммиты в процедурах. Но мне такие процадуры разрабатывать не приходилось.
← →
ANB © (2005-10-13 12:37) [56]
> Seg (13.10.05 11:14) [51]
- удалось. Только она на клиппере еще писана была. На оракл надо переписывать.
> Seg (13.10.05 11:54) [55]
- сначала на этапе проектирования решается, что можно так делать. Года через 2 приходит новый программер и удивляется, почему, если он выполняет в одной транзакции 2 процедуры, то они выполняются в разных. Причем он может и не удивиться, так как заметит скорее всего только пользователь, когда у него данные в базе поедут.
← →
Seg (2005-10-13 13:21) [57]Года через 2 приходит новый программер
Документировать систему не пытались?
← →
Sergey13 © (2005-10-13 13:23) [58]2[56] ANB © (13.10.05 12:37)
Да брось ты. Он видимо непрошибаемый. Пусть коммитит. Жалко что ли. 8-)
← →
ANB © (2005-10-13 14:14) [59]
> Sergey13 © (13.10.05 13:23) [58]
Не работает он в жесткой конторе. Огреб бы пару раз штрафов по 30 баксов, быстро бы грамотно писать научился.
← →
iamkate © (2005-10-13 14:52) [60]>Выкинь фото из запроса. Доставай его отдельным запросом по требованию >юзера как я написал в [1].
Большое спасибо. Это помогло. Теперь ничего не виснет и скорость увеличилась до 20 сек (раньше update шел не меньше 1,5 мин.)
Извиняюсь, что поздно сообщаю.
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.015 c