使用触发器根据另一个 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
正如标题所说,我正在尝试根据 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