SQL 视图的更新触发器条件
If condition of Update Trigger of SQL view
如果我有一个名为 Task 的 table,其中包含以下列:
- 编号
- 姓名
- 项目 (varchar)
- 完成百分比(整数)
- 用户戳
- 时间戳
table有观点。除了 PercentComplete (int) 之外,该视图具有与任务 table 相似的列。相反,它具有 Completed(位)。
视图有更新触发器。这是视图更新触发器的片段
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
这按预期工作。但是现在我需要为项目列添加一个条件。
例如,如果项目 = 'MyProject',则只更新 table。所以像:
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
如何实现?
谢谢
我认为您需要做的只是一个内部连接和一个简单的 where 案例。
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'
如果我有一个名为 Task 的 table,其中包含以下列:
- 编号
- 姓名
- 项目 (varchar)
- 完成百分比(整数)
- 用户戳
- 时间戳
table有观点。除了 PercentComplete (int) 之外,该视图具有与任务 table 相似的列。相反,它具有 Completed(位)。
视图有更新触发器。这是视图更新触发器的片段
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
这按预期工作。但是现在我需要为项目列添加一个条件。
例如,如果项目 = 'MyProject',则只更新 table。所以像:
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
如何实现?
谢谢
我认为您需要做的只是一个内部连接和一个简单的 where 案例。
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'