使用触发器根据另一个 table 的特定值更新一个 table 中的特定值

Using a trigger to update a specific value in one table based on a specific value of another table

正如标题所说,我正在尝试根据 specific column in another table in another table 更新为。我无法在堆栈溢出中找到任何与我正在尝试做的事情相关的内容。到目前为止,它要么根据相同的 table 更新一个 table,要么根据列是否更改(不查找特定值)进行更新。

也就是说,到目前为止,我已经根据我对堆栈溢出的研究拼凑了以下代码:

CREATE TRIGGER trUpdateTaskToComplete on [DBName].[dbo].[Projects]
AFTER UPDATE
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE [DBName].[dbo].[TaskTracker]
    SET Complete=1
    FROM [DBName].[dbo].[Projects] t
    INNER JOIN inserted i on t.id = i.id
    AND i.Status='Complete'
END

这完成了我需要它完成的 90%,除了它更新了 TaskTracker table 上与项目 ID 关联的所有行。我怎样才能让它只在任务(来自 TaskTracker 的列)的值为 "ProjectIsComplete" 的行上设置 Complete=1?我试过这样的事情:

    UPDATE [DBName].[dbo].[TaskTracker]
    SET Complete=1
    WHERE Task = "ProjectIsComplete"
    FROM [DBName].[dbo].[Projects] t
    INNER JOIN inserted i on t.id = i.id
    AND i.Status='Complete'

不过好像SQL服务器不是那种生活。我该怎么做才能使我的触发器工作?注意:我只为任务值为 "ProjectIsComplete" 的行设置要完成的字段,并且仍然用于相关 ID。感谢您提供任何建议!

感谢 Sean Lange 的回答。正确代码如下:

CREATE TRIGGER trUpdateTaskToComplete on [DBName].[dbo].[Projects]
AFTER UPDATE
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE [DBName].[dbo].[TaskTracker]
    SET Complete=1
    FROM [DBName].[dbo].[Projects] t
    INNER JOIN inserted i on t.id = i.id
    AND i.Status='Complete'
    WHERE Task = 'Complete'
END