Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.27;
Скачать: CL | DM;

Вниз

Проблема с 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;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.031 c
6-1122170765
mm0
2005-07-24 06:06
2005.11.27
Помогите зделать POST запрос для отправки СМС


1-1130868953
Alexander Dakis
2005-11-01 21:15
2005.11.27
Как создать динамическое выделение текста, как в редакторе Delphi


2-1131391908
AndreyLi
2005-11-07 22:31
2005.11.27
Node, Nodes. Разукрашивание. TCanvas. Глюк?


3-1129265006
kvi
2005-10-14 08:43
2005.11.27
ограничение на число полей в таблицах paradox


14-1131312974
Gero
2005-11-07 00:36
2005.11.27
Блокнот -> Перейти