обновить timestamp руками
От: Tom Россия http://www.RSDN.ru
Дата: 28.09.06 08:09
Оценка:
MSSQL2005, нужно увеличить (обновить) поле timestamp не меняя самого row. Можно это как то сделать?
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Народная мудрось
всем все никому ничего(с).
Re: обновить timestamp руками
От: Lloyd Россия  
Дата: 28.09.06 08:12
Оценка: 10 (1)
Здравствуйте, Tom, Вы писали:

Tom>MSSQL2005, нужно увеличить (обновить) поле timestamp не меняя самого row. Можно это как то сделать?


UPDATE YourTable SET AnyField = AnyField WHERE KeyField = ...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: обновить timestamp руками
От: Tom Россия http://www.RSDN.ru
Дата: 28.09.06 08:34
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Tom, Вы писали:


Tom>>MSSQL2005, нужно увеличить (обновить) поле timestamp не меняя самого row. Можно это как то сделать?


L>
L>UPDATE YourTable SET AnyField = AnyField WHERE KeyField = ...
L>


Не работает
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Народная мудрось
всем все никому ничего(с).
Re[2]: обновить timestamp руками
От: Tom Россия http://www.RSDN.ru
Дата: 28.09.06 08:46
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Tom, Вы писали:


Tom>>MSSQL2005, нужно увеличить (обновить) поле timestamp не меняя самого row. Можно это как то сделать?


L>
L>UPDATE YourTable SET AnyField = AnyField WHERE KeyField = ...
L>


Вопрос снимается, всё работает. Ошибся в прошлом посте
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Народная мудрось
всем все никому ничего(с).
Re[2]: обновить timestamp руками
От: _d_m_  
Дата: 29.09.06 00:56
Оценка: 16 (2)
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Tom, Вы писали:


Tom>>MSSQL2005, нужно увеличить (обновить) поле timestamp не меняя самого row. Можно это как то сделать?


L>
L>UPDATE YourTable SET AnyField = AnyField WHERE KeyField = ...
L>


Такой метод имеет один недостаток — если на таблице триггер, а в триггере, допустим, производятся действия при изменении столбца AnyField, типа:
create trigger ...
...
if update(AnyField)
    update
        OtherTable
    ...

В вышеуказанном случае будет нежелательный оверхэд. Лучше использовать фиктивный апдейт:
declare @dumb int
update
    dbo.YourTable
set
    @dumb = 0
where
    KeyField = ...
;
Re[3]: обновить timestamp руками
От: shelkovnikov Россия  
Дата: 29.09.06 03:01
Оценка:
Здравствуйте, _d_m_, Вы писали:

___>В вышеуказанном случае будет нежелательный оверхэд. Лучше использовать фиктивный апдейт:

___>
___>declare @dumb int
___>update
___>    dbo.YourTable
___>set
___>    @dumb = 0
___>where
___>    KeyField = ...
___>;
___>


проверил, но не пойму почему такая конструкция работает
Re[4]: обновить timestamp руками
От: shelkovnikov Россия  
Дата: 29.09.06 03:12
Оценка:
Здравствуйте, shelkovnikov, Вы писали:

S>Здравствуйте, _d_m_, Вы писали:


___>>В вышеуказанном случае будет нежелательный оверхэд. Лучше использовать фиктивный апдейт:

___>>
___>>declare @dumb int
___>>update
___>>    dbo.YourTable
___>>set
___>>    @dumb = 0
___>>where
___>>    KeyField = ...
___>>;
___>>


S>проверил, но не пойму почему такая конструкция работает


поразбирался: да запись обновляется (затраты на физическую модификацию те же), экономия похоже только на триггере (если есть)
Re[5]: обновить timestamp руками
От: _d_m_  
Дата: 29.09.06 13:23
Оценка:
Здравствуйте, shelkovnikov, Вы писали:

S>поразбирался: да запись обновляется (затраты на физическую модификацию те же), экономия похоже только на триггере (если есть)


Но тем не менее. Назовем это — best practice
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.