【发布时间】:2014-01-19 20:19:41
【问题描述】:
我知道有很多关于这方面的问题,但在阅读之后,似乎没有人遇到和我一样的麻烦。
背景信息:我希望对多维数据集进行增量更新,但表上没有更新时间戳。我现在正在考虑创建一个独立表,该表在更新记录时通过带有 gkey 和当前日期时间戳的触发器进行更新。
我在桌子上的触发器如下:
CREATE TRIGGER trgAfterUpdateVisitDetails ON [visit_details]
FOR UPDATE
AS
begin
declare @VD_Gkey nvarchar
declare @today DATETIME = SYSDATETIME()
insert into [UpdatedVD]
SELECT
@VD_Gkey, @today
FROM
[visit_details]
End
这给了我一个类似下面的输出,但有 917 行相同:
+---------+-------------------------+
| VD_Gkey | today |
+---------+-------------------------+
| NULL | 2014-01-02 11:21:23.963 |
| NULL | 2014-01-02 11:21:23.963 |
+---------+-------------------------+
我知道这将是一件非常简单的事情,但我无法理解这一点。
任何帮助都会很棒。
谢谢。
【问题讨论】:
-
您的触发器没有引用
Inserted或Deleted伪表,其中包含有关那些实际受UPDATE操作影响的行的信息...您需要 加入 这两个伪表中的任何一个,以将您的INSERT语句限制为那些实际更新的行!
标签: sql sql-server sql-server-2008 tsql triggers