【发布时间】:2015-12-28 00:08:57
【问题描述】:
当输入 UPDATE 语句时,触发器会被激活,这样最后原始行和更新行都会保留下来,如果用户愿意,可以显示出来。
原始行(已编辑标记为 Y)的值是正确的,但更新后的行(已编辑标记为 NULL)应该具有与原始行的 ModificationDate 相同的 CreationDate,而不是 CreationDate。我该如何解决?
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
执行此 T-SQL 时调用的触发器:
UPDATE ProcessList
SET Amount = 23000
WHERE Name = 'Tammy'
SELECT *
FROM ProcessList
UNION ALL
SELECT *
FROM ProcessListHist
ORDER BY ID ASC, CreationDate ASC
【问题讨论】:
标签: sql sql-server datetime triggers delete-row