Tsql 已删除的表在instead of update触发器中使用

Tsql 已删除的表在instead of update触发器中使用,tsql,sql-server-2008-r2,Tsql,Sql Server 2008 R2,我得到了下面的代码(没有机会问编写它的人),并且不认为删除时需要内部连接。我错过什么了吗? 我想,删除的表是在中使用的,而不是在delete触发器中使用的。在中代替插入的触发器,不是在中代替更新触发器 CREATE TRIGGER "someTrigger" ON "dbo"."someView" INSTEAD OF UPDATE AS BEGIN INSERT INTO "someOtherTable" ( "id" ,

我得到了下面的代码(没有机会问编写它的人),并且不认为删除时需要
内部连接。我错过什么了吗?
我想,删除的表是在
中使用的,而不是在delete触发器中使用的。在
中代替插入的触发器
,不是在
中代替更新触发器

CREATE TRIGGER "someTrigger" ON "dbo"."someView"
INSTEAD OF UPDATE
AS
BEGIN           
    INSERT INTO "someOtherTable"
    ( 
        "id"
        , "startTime"
        , "endTime"
        , "duration"
        , "resourceId"
        , "resourceLocked"
        , "timeLocked"
        , "groupPrefix"
    )
    SELECT 
        "id"                = i."id"
        , "startTime"       = i."startTime"
        , "endTime"         = i."endTime"
        , "duration"        = ISNULL( i."duration", 0 )
        , "resourceId"      = i."resourceId"
        , "resourceLocked"  = ISNULL( i."resourceLocked", 0 )
        , "timeLocked"      = ISNULL( i."timeLocked", 0 )
        , "groupPrefix"     = N'gp'
    FROM inserted AS i
    INNER JOIN deleted AS d
        ON d."id" = i."id"
    WHERE ( i."jobType" != 3 )
       OR ( i."jobType"  = 3 AND i."startTime" != d."startTime" );

END;

在更新触发器中,两个触发器都会被填充<代码>插入
包含新行值,
删除
包含旧行值,即执行
更新
语句之前的值

这里,它似乎在
WHERE
子句中使用:

WHERE ( i."jobType" != 3 )
   OR ( i."jobType"  = 3 AND i."startTime" != d."startTime" );
因此,如果
jobType
为3,我们仅在
startTime
已更改时执行插入



需要注意的是,只有在至少一个键的列不需要更新的情况下,才能将插入的
和删除的
之间的行关联起来。在这里,
id
似乎是一个键。希望
id
列不需要更新,否则在发生此类更新时,此触发器可能会出现错误。

非常感谢!我不知道
deleted
也填充在更新触发器中。