后,这是保持简单的跟踪更改数据库行的最佳方式:触发和更新的行中的SQL Server,它已经更新
ALTER TRIGGER [dbo].[trg_121s]
ON [dbo].[121s]
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 dbo.[121s]
set modified=getdate()
where id in
(select distinct ID from Inserted)
END
所以任何更新的行[121S]将导致更新修改的列。
它的工作原理,但我不知道这是否是实现这一目标的最佳途径。
我很困惑超过此线利尔:
(select distinct ID from Inserted)
...它是如何知道它得到正确的行ID。
感谢您的任何确认/澄清,
马克
使用'GETDATE()'中的查询被追逐的目标,影响性能,并且可能产生好奇的结果,例如随着日期的变化。在变量中捕获当前日期/时间几乎总是一个更好的主意,然后根据需要使用该值。在存储过程中,这在多个语句中更重要。多次使用'GetDate()'的最常见原因是捕获长时间运行操作的开始和结束时间。 – HABO
@HABO,除非绝对重要的是所有的行都标记了完全相同的更新时间戳,我认为在这种情况下不存在太多问题。 –
我不确定,但我认为在一个声明中,getdate()将为每一行返回相同的日期/时间。 –