SQL如何更新“已删除”行

时间:2015-09-30 09:07:51

标签: sql sql-server datetime triggers delete-row

enter image description here

当输入UPDATE语句时,触发器被激活,以便最后保留原始行和更新行,并且如果用户想要,则可以显示。

orignal行(编辑标记为Y)值是正确的,但更新的行(编辑标记为NULL)应该与原始行CreationDate的{​​{1}}相同,而不是ModificationDate }。我该如何解决?

CreationDate

执行此T-SQL时调用触发器:

CREATE TRIGGER CloneAfterUpdate
ON ProcessList
AFTER UPDATE
AS 
IF (UPDATE(Amount) OR UPDATE(Name))
BEGIN
   INSERT INTO ProcessListHist (
           ID,
           Name,
           Amount,
           CreationDate,
           Edited,
           ModificationDate)
   SELECT 
      ID, Name, Amount, CreationDate, 'Y', GETDATE() 
   FROM deleted
END

1 个答案:

答案 0 :(得分:0)

我刚刚开始使用sql,但我认为这可能会这样做:

UPDATE ProcessList 
SET Amount = 23000 
WHERE Name = 'Tammy'

SELECT     ph.ID,
           ph.Name,
           ph.Amount,
           ph.CreationDate,
           ph.Edited,
           pl.ModificationDate,

FROM ProcessList pl
left join ProcessListHist ph
on pl.id=ph.id and pl.Name= ph.name and pl.CreationDate =ph.CreationDate
ORDER BY ID ASC, CreationDate ASC

这是未经测试的,只是为了给你一个想法。如果这不正确,我道歉。