【发布时间】:2013-12-11 23:54:59
【问题描述】:
我是 SQL 触发器的新手,需要一些帮助。我有下面的更新触发器,它工作正常 - 当 Status = 'Completed' 或 'Created By Error' 时更新 CompletedDate。
ALTER TRIGGER [dbo].[trigger_CompletedDate] ON [dbo].[ERP_PurchaseRequest] AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF (UPDATE(PRStatus))
BEGIN
UPDATE pr SET CompletedDate = GETDATE()
FROM [ERP_PurchaseRequest] pr
INNER JOIN INSERTED i ON pr.PRStatus = i.PRStatus
WHERE (i.PRStatus = 'Completed'
AND pr.PRID = i.PRID)
OR
(i.PRStatus = 'Created By Error'
AND pr.PRID = i.PRID)
END
END
现在,我需要修改此触发器以执行以下操作:
1) 如果 i.PRStatus = 'Completed',则 UPDATE CompletedDate,并对不同的表执行另一个 UPDATE 查询 WHERE PRID 到 PRID 更新,如:
UPDATE Table1 SET Column1 = 'Yes" Where PRID = i.PRID (from the inserted table)
2) ElseIf i.PRStatus = 'Created By Error',则仅更新 CompletedDate。
如果可能,请提供示例代码。赞赏!
谢谢,
【问题讨论】:
-
那么你尝试了什么?什么没用?为什么它不起作用?
-
不知道更新加入INSERTED表时如何分离。
-
我想出了解决办法。
标签: sql-server-2008 tsql triggers