Я бы хотел, чтобы в моей таблице было два столбца для хранения времени добавления и обновления. Как следует из названия, время добавления - это время, когда строка была впервые добавлена; время обновления - последний раз, когда строка была обновлена. Я могу реализовать сначала по умолчанию значение GETDATE()
. Что касается второго, @Jeremy предложил использовать триггеры здесь:
При обновлении: поле даты / времени автоматического обновления
- Есть ли более простой способ?
- Если я реализую триггер, означает ли это, что должны выполняться два оператора
UPDATE
(или один INSERT
и один UPDATE
в случае, если строка только что создана)?
Спасибо.
РЕДАКТИРОВАТЬ: Для второй части вопроса, это триггер, который я имею в моей базе данных:
CREATE TRIGGER [dbo].[TR_AddUpdateTime]
ON [dbo].[AddUpdateTime]
AFTER UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here
UPDATE r
SET UpdateTime = GETDATE()
FROM AddUpdateTime r
JOIN inserted i
ON i.Id = r.Id
END
Означает ли это, что дополнительный оператор обновления будет выполняться всякий раз, когда я обновляю таблицу AddUpdateTime, или MSSQL достаточно умен, чтобы признать, что я обновляю одну и ту же запись, и сохранить оба изменения одновременно?