我创建了下表
CREATE TABLE [dbo].[Audit.Awards]
(SessionID int IDENTITY(1,1) NOT NULL,
ID INT NOT NULL,
Name NVARCHAR(max) NOT NULL,
Abstract NVARCHAR(max) NOT NULL,
ChangedDate DATETIME NOT NULL Default GETDATE(),
ChangedBy NVARCHAR(40) )
我创建了以下触发器
create trigger tIU on [dbo].[Awards] after UPDATE,insert
as
declare @ID int;
declare @name varchar(max);
declare @abstract varchar(max);
begin
select @ID=i.ID,@name=i.name,@abstract=i.abstract from inserted i;
insert into [dbo].[Audit.Awards](ID,name, abstract) values(@ID,@name,@abstract)
end
触发器当前将更新中的新数据保存在audit.awards表中。如何保存被覆盖的数据?
答案 0 :(得分:3)
在触发器中,选择deleted
代替inserted
。
顺便说一下,你应该使用INSERT..SELECT而不是使用局部变量。
insert into [dbo].[Audit.Awards](ID,name, abstract)
select ID,name,abstract from deleted