如果SQL视图的更新触发条件

时间:2015-02-03 18:14:58

标签: sql sql-server tsql triggers

如果我有一个名为任务的表格,其中包含以下列:

  • 编号
  • 名称
  • 项目(varchar)
  • PercentComplete(int)
  • Userstamp
  • 时间戳

该表有一个视图。除了 PercentComplete (int)之外,该视图具有与Task表类似的列。相反,它有已完成(位)。

视图有一个更新触发器。以下是视图更新触发器的片段

IF 
    UPDATE (Completed)

BEGIN
    UPDATE Task
    SET PercentComplete = CASE Completed
            WHEN 1
                THEN 100
            ELSE 0
            END
        ,Userstamp = inserted.Userstamp
        ,Timestamp = getDate()
    FROM inserted
END

这可以按预期工作。但是现在我需要为Project列添加一个条件。

例如,如果Project ='MyProject',则仅更新表。如下所示:

IF 
    UPDATE (Completed) and inserted.Project = 'MyProject'

BEGIN
    UPDATE Task
    SET PercentComplete = CASE Completed
            WHEN 1
                THEN 100
            ELSE 0
            END
        ,Userstamp = inserted.Userstamp
        ,Timestamp = getDate()
    FROM inserted
END

我如何实现这一目标?

由于

1 个答案:

答案 0 :(得分:0)

我认为您需要做的就是内部联接和简单的情况。

UPDATE T
SET PercentComplete = CASE Completed
        WHEN 1 THEN 100
        ELSE 0
    END
    ,Userstamp = inserted.Userstamp
    ,Timestamp = getDate()
FROM Task AS T
INNER JOIN INSERTED AS I
    ON I.ID = T.ID
WHERE I.Project = 'Your Project'