0
我創建了下表如何在審計表中保存以前的版本?
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表更新保存新的數據。如何保存被覆蓋的數據?
你問你如何只保存已更改的數據? – Leonidas199x
你也創建了一個'BEFORE UPDATE'觸發器 –
你的觸發器是致命的缺陷。插入和刪除可以包含多條記錄。你永遠不要爲插入或刪除的參數賦值,因爲它們不是標量。改爲在插入中使用select語句。 – HLGEM