Показать сообщение отдельно
Старый 24.12.2008, 18:39   #2  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
я бы не стал считать это багом. Это вполне ожидаемый баг разработчика повторного использования одних и тех же переменных. Курсор в select и курсор в update должны отличаться. И если первый был выбран с определенными параметрами - то как система должна догадаться, что в update_recordset она должна выполнить операцию без оглядки на первый курсор?
Т.е. рекомендация такая. Есть переменные, которые используются для выборки (только чтения). Есть переменные, которые используются для записи (выбранные с forupdate). И есть переменные, которые по сути своей курсора в БД не создают (ну с т.з. разработчика это не видно), а лишь обозначают таблицу, над которой надо выполнить определенные действия (это для delete_from и update_recordset).

Ведь выбрав записи без forupdate никто ж не пытается обновить данные. А если хочется обновить - то делается повторная выборка с forupdate.
Так и тут - эта переменная просто обозначает таблицу и не должна нести на себе "груз" дополнительной ответственности.

Так что это больше похоже на фичу. Но весьма интересную фичу.

- Я тебе дал два яблока. Затем потом одно забрал. Сколько у тебя осталось?
- Одно
- Неправильно. Ведь неизвестно - сколько их было у тебя до того как я тебе их дал.
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: Gustav (2).