Ich habe die folgende TabelleWie speichert man die vorherige Version in der Audit-Tabelle?
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))
und Ich habe den folgenden Trigger
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
Der Auslöser zur Zeit speichert die neuen Daten aus dem Update in der audit.awards Tabelle. Wie speichere ich die Daten, die überschrieben wurden?
Fragen Sie, wie Sie nur die Daten speichern, die geändert wurden? – Leonidas199x
Sie erstellen auch einen 'BEFORE UPDATE'-Trigger –
Ihr Trigger ist tödlich fehlerhaft. Eingefügt und gelöscht kann mehr als einen Datensatz enthalten. Sie weisen einem Parameter NIEMALS einen Wert von eingefügt oder gelöscht zu, da sie nicht skalar sind. Verwenden Sie stattdessen eine select-Anweisung in Ihrer Einfügung. – HLGEM