Показать сообщение отдельно
Старый 08.04.2009, 10:31   #7  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от ZVV Посмотреть сообщение
По-моему причины данного поведения достаточно очевидны.
Если делается обычный update() то Акса проверяет, что хоть какое-то поле поменялось и если нет, то реального Апдэйта в БД не уходит.
В случае же update_recordset если выполняются все необходимые условия (типа отсутствия перекрытого метода update(), отсутствия Лога БД или же если есть соответсвующие skipXXX()... это я думаю понятно....) на сервер БД сразу отправляется update вида:
X++:
UPDATE ... 
SET FIELD=:in1,MODIFIEDDATE=:in2,MODIFIEDTIME=:in3
WHERE ...
Соответсвенно и поля меняются всегда для попадающих под запрос строк.
Всё логично... С точки зрения БД - это номальное как раз поведение, т.к. обновление реальное было.

Перекройте метод Update() на таблице и получится первый вариант поведения (Аксаптовский)...
Со всеми вытекающими по скорости.
Согласен. Но почему тогда, когда указываешь overridesystemfields(true) обычный запрос не обновляет поля Modified, а update_recordset обнуляет их?