前段时间,曾经写过一个例子,http://www.cnblogs.com/insus/articles/1916558.html是使用OUTPUT来记录更新前后的值,
现在可以使用SQL Server的触发器来实现。
演示,
代码
--
创建一个UPDATE触发器
CREATE TRIGGER [ dbo ] . [ tri_Member_Udate ] ON [ dbo ] . [ Member ]
FOR UPDATE
AS
BEGIN
-- 宣告变量
DECLARE @MemberId [ int ] , @Name [ nvarchar ] ( 100 ) , @OldSalery [ decimal ] ( 18 , 6 ), @newSalery [ decimal ] ( 18 , 6 )
-- 从deleted虚拟表取到旧值
SELECT @MemberId = [ MemberId ] , @Name = [ Name ] , @OldSalery = [ Salary ] FROM deleted
-- 从inserted虚拟表取到新值
SELECT @newSalery = [ Salary ] FROM inserted
-- 插入到目标表(临时表)中
INSERT INTO [ dbo ] . [ #SalaryReport ] VALUES ( @MemberId , @Name , @OldSalery , @newSalery )
END
CREATE TRIGGER [ dbo ] . [ tri_Member_Udate ] ON [ dbo ] . [ Member ]
FOR UPDATE
AS
BEGIN
-- 宣告变量
DECLARE @MemberId [ int ] , @Name [ nvarchar ] ( 100 ) , @OldSalery [ decimal ] ( 18 , 6 ), @newSalery [ decimal ] ( 18 , 6 )
-- 从deleted虚拟表取到旧值
SELECT @MemberId = [ MemberId ] , @Name = [ Name ] , @OldSalery = [ Salary ] FROM deleted
-- 从inserted虚拟表取到新值
SELECT @newSalery = [ Salary ] FROM inserted
-- 插入到目标表(临时表)中
INSERT INTO [ dbo ] . [ #SalaryReport ] VALUES ( @MemberId , @Name , @OldSalery , @newSalery )
END