![]() |
#2 |
Administrator
|
Метод _common.selectForUpdate(true); должен выполняться до выборки данных.
Т.е. сначала _common.selectForUpdate(true); А потом - select * from common. Приведенный пример - излюбленный способ тех разработчиков, которым не хочется делать лишний select, а хочется уже после выборки либо обновлять, либо не обновлять запись (сам таким когда-то был - знаю). База данных так не работает. Ей нужно знать до выборки - блокировать ли записи или нет на обновление. Поэтому правильное решение - перестроить код так, чтобы вызов метода selectForUpdate был бы ДО оператора выборки данных. Конструкция, приведенная у Вас - может работать (ядро АХ все-таки старается) - но могут быть разные глюки - либо с блокировками при многопользовательской работе, либо с ошибками как у Вас, либо еще какие-то ошибки
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 02.09.2021 в 09:41. |
|
|
За это сообщение автора поблагодарили: SRF (1), oleggy (1). |
|
|