|
![]() |
#1 |
Administrator
|
я бы не стал считать это багом. Это вполне ожидаемый баг разработчика повторного использования одних и тех же переменных. Курсор в select и курсор в update должны отличаться. И если первый был выбран с определенными параметрами - то как система должна догадаться, что в update_recordset она должна выполнить операцию без оглядки на первый курсор?
Т.е. рекомендация такая. Есть переменные, которые используются для выборки (только чтения). Есть переменные, которые используются для записи (выбранные с forupdate). И есть переменные, которые по сути своей курсора в БД не создают (ну с т.з. разработчика это не видно), а лишь обозначают таблицу, над которой надо выполнить определенные действия (это для delete_from и update_recordset). Ведь выбрав записи без forupdate никто ж не пытается обновить данные. А если хочется обновить - то делается повторная выборка с forupdate. Так и тут - эта переменная просто обозначает таблицу и не должна нести на себе "груз" дополнительной ответственности. Так что это больше похоже на фичу. Но весьма интересную фичу. - Я тебе дал два яблока. Затем потом одно забрал. Сколько у тебя осталось? - Одно - Неправильно. Ведь неизвестно - сколько их было у тебя до того как я тебе их дал.
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: Gustav (2). |
![]() |
#2 |
MCITP
|
![]() Цитата:
В случае явного курсора такого бы не произошло. И обратите внимание на отредактированное исходное сообщение... Цитата:
UPD:
PS Кстати, попробовал на 4-ке то же самое - уже такого эффекта нет, обновляет все строчки в последнем случае тоже. Значит всё-таки был баг и исправили. На 3-ке - будьте бдительны. ![]()
__________________
Zhirenkov Vitaly |
|
![]() |
#3 |
MCITP
|
![]()
Да, забыл отметить, что спастись в данной ситуации можно (ну кроме новой переменной, иссестна
![]() X++: <tableBuffer>= null;
__________________
Zhirenkov Vitaly |
|
|
За это сообщение автора поблагодарили: Logger (2). |
![]() |
#4 |
Administrator
|
Цитата:
![]() Ну а если Ваш эффект исправили - значит все-таки действительно решили что баг. А за предостережение - спасибо. Все-таки повод лишний раз проверить код ![]()
__________________
Возможно сделать все. Вопрос времени |
|
Теги |
курсор |
|
![]() |
||||
Тема | Ответов | |||
Все же - приколы KR 1-3 | 0 | |||
Приколы нашей системы - импорт объектов | 4 | |||
Курсоры | 20 |
|