触发器仅修改更新/插入的行

时间:2010-07-06 03:51:34

标签: sql-server-2005

您好我有以下触发器。

ALTER TRIGGER [dbo].[DivisionLastModified] ON [dbo].[tb_Division] WITH EXECUTE AS CALLER FOR INSERT, UPDATE AS BEGIN UPDATE tb_Division SET LastModified = GetDate() END

这会更新所有行,但我只想修改更新/添加的行。 这可以实现吗?

2 个答案:

答案 0 :(得分:0)

这是因为您更新了所有行

UPDATE tb_Division SET LastModified = GetDate() 

您必须指定最后插入或更新的行ID

所以你可以在Where条件中指定一些像这样的东西

UPDATE tb_Division SET LastModified = GetDate() where id=4

答案 1 :(得分:0)

要在受插入或更新影响的行上更新LastModified,您需要使用仅在触发器中可用的inserted表。

ALTER TRIGGER [dbo].[DivisionLastModified]
ON [dbo].[tb_Division]
WITH EXECUTE AS CALLER FOR INSERT, UPDATE AS
BEGIN
    UPDATE tb_Division
    SET LastModified = GetDate()
    WHERE tb_Division.<Primary Key Column Name Here> IN (
        SELECT <Primary Key Column Name Here> FROM inserted
    )
END