Показать сообщение отдельно
Старый 07.04.2009, 18:15   #4  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
Это понятно. Проблему это решит, но не поможет понять почему update_recordset работает не так, как обычный update.
Я имею в виду если поле было равно true и update хочет сделать true. Следовательно ничего не изменилось и modifieddate/time меняться не должны по идее, а они меняются.
По-моему причины данного поведения достаточно очевидны.
Если делается обычный update() то Акса проверяет, что хоть какое-то поле поменялось и если нет, то реального Апдэйта в БД не уходит.
В случае же update_recordset если выполняются все необходимые условия (типа отсутствия перекрытого метода update(), отсутствия Лога БД или же если есть соответсвующие skipXXX()... это я думаю понятно....) на сервер БД сразу отправляется update вида:
X++:
UPDATE ... 
SET FIELD=:in1,MODIFIEDDATE=:in2,MODIFIEDTIME=:in3
WHERE ...
Соответсвенно и поля меняются всегда для попадающих под запрос строк.
Всё логично... С точки зрения БД - это номальное как раз поведение, т.к. обновление реальное было.

Перекройте метод Update() на таблице и получится первый вариант поведения (Аксаптовский)...
Со всеми вытекающими по скорости.
__________________
Zhirenkov Vitaly