Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.033 c
6-1123681064
Hose
2005-08-10 17:37
2005.11.27
проблема с THTTPRIO


14-1131286082
_xroot
2005-11-06 17:08
2005.11.27
ThemeEngine 5.52


5-1112860368
ancara
2005-04-07 11:52
2005.11.27
Как добавить пути к модулям?


2-1131357454
Dimon777
2005-11-07 12:57
2005.11.27
Можно ли создать приложение, в котором нет ни одной формы?


2-1131451657
San1
2005-11-08 15:07
2005.11.27
Элементарный код, а не работает. Подскажите в чем дело.





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