Я согласен с остальными - установите значение по умолчанию GetDate () в столбце LastUpdate, а затем используйте триггер для обработки любых обновлений.
Просто что-то простое:
CREATE TRIGGER KeepUpdated on Profiles
FOR UPDATE, INSERT AS
UPDATE dbo.Profiles
SET LastUpdate = GetDate()
WHERE Username IN (SELECT Username FROM inserted)
Если вы хотите стать действительно модным, пусть он оценивает то, что меняется, и то, что в базе данных, и изменяет LastUpdate только в том случае, если есть разница.
Учтите это ...
7 утра - пользователь 'jsmith' создан с фамилией 'Smithe' (упс), по умолчанию LastUpdate равен 7 часов утра * 10101 *
8:00 - «jsmith» отправляет электронное письмо, чтобы сообщить, что его имя неверно. Вы немедленно выполняете обновление, поэтому фамилия теперь «Смит» и (благодаря триггеру) LastUpdate показывает 8 часов утра
2pm - Вашему бездельному коллеге наконец-то надоедает StumbleUpon и он проверяет свою электронную почту. Он видит предыдущее сообщение от «jsmith» об изменении имени. Он запускает: UPDATE Profiles SET LastName = 'Smith' WHERE Username = 'jsmith' и затем идет
вернуться к серфингу MySpace. Триггеру все равно, что фамилия была уже «Смит», поэтому LastUpdate теперь показывает 2 часа дня .
Если вы просто слепо изменяете LastUpdate при каждом выполнении оператора обновления, это ТЕХНИЧЕСКИ правильно, потому что обновление действительно произошло, но, вероятно, имеет больше смысла фактически сравнивать изменения и действовать соответственно. Таким образом, оператор обновлений в 2 часа дня по-прежнему будет работать, но LastUpdate по-прежнему будет отображаться в 8 часов утра.
- Кевин