creo innesco che lo fa per XML in questo modo siamo in grado di registrare tutte le tabelle a stesso tavolo, il che rende più flessibile
CREATE TABLE [dbo].[AuditAll] (
AuditId int NOT NULL IDENTITY(1,1),
[DateTime] datetime NOT NULL,
TableName nvarchar(255) NOT NULL,
AuditEntry xml NULL,
CONSTRAINT [PK_AuditAll] PRIMARY KEY CLUSTERED (AuditId ASC)
)
Ho solo bisogno di valori 'vecchi', così ho Store cancellato tavolo solo, inserito il tavolo può essere visto in ogni caso nella tabella.
CREATE TRIGGER AuditSimple
ON Simple
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF (SELECT COUNT(*) FROM deleted) > 0
begin
Declare @AuditMessage XML
--set valut to all xml from deleted table
set @AuditMessage = (select * from deleted for xml auto)
insert into AuditAll(DateTime, TableName, AuditEntry)
values (GetDate(), 'Simple', @AuditMessage)
end
END
GO
Credo che questo potrebbe facilmente essere chiamato in sp_foreach per crearlo per ogni tabella in datatabase ma non abbiamo bisogno che in questo momento, basta ricordarsi di cambiare i vostri nomi di tabella
applausi
Questo è stato chiesto e ha risposto qui: http://stackoverflow.com/questions/8873335/how-to-create-generic-sql-server-stored-procedure-to-perform-inserts-into-audit – Alicia
Uso Opzione trigger per il tuo requisito ... – bgs