Vorab: wenn ich in die Falsche Richtung gallopiere, dan Bremse anlegen (Stop schreien)
MS-
SQL als "richtige"
DB hat auch Features wie Trigger und Stored Procedures.
Wenn ich Dich richtig verstanden habe, möchtest Du die abgesetzten (datenändernden)
SQL-Commands loggen. Ich unterstelle jetzt mal, Du möchtest das aus Sicherheitsgründen und nicht zum debuggen machen.
Dann könntest Du dies mit Triggern "sauberer" lösen, da diese nicht nur auf
SQL-Commands aus Deiner Anwendung sondern auf alle
SQL-Commands - egal woher (z.B. Queryanalyser/DbExplorer) - reagieren.
SQL-Code:
create table Daten
(
idDaten int identity(1,1) not null,
V_Wert varchar(35) null
constraint pk_Daten primary key (idDaten)
)
go
create table Log
(
idLog int identity(1,1) not null,
V_WertNew varchar(35) null,
V_WertOld varchar(35) null,
V_Aktion varchar(10) not null,
V_Benutzer varchar(255) not null,
D_Zeitpunkt datetime not null
constraint pk_Log primary key (idLog)
)
go
create trigger DatenInsertTrigger on Daten for insert as
begin
declare
@WertNew varchar(35)
set @WertNew = select V_Wert from Inserted
insert Into Log
(V_WertNew,V_Aktion,V_Benutzer,D_Zeitpunkt)
VALUES
(@WertNew,'Insert',SUSER_SNAME(),getdate())
end
go
create trigger DatenUpdateTrigger on Daten for update as
begin
declare
@WertNew varchar(35),
@WertOld varchar(35)
set @WertNew = select V_Wert from Inserted
set @WertOld = select V_Wert from Deleted
insert Into Log
(V_WertNew,V_WertOld,V_Aktion,V_Benutzer,D_Zeitpunkt)
VALUES
(@WertNew,@WertOld,'Update',SUSER_SNAME(),getdate())
end
go
create trigger DatenDeleteTrigger on Daten for delete as
begin
declare
@WertOld varchar(35)
set @WertOld = select V_Wert from Deleted
insert Into Log
(V_WertOld,V_Aktion,V_Benutzer,D_Zeitpunkt)
VALUES
(@WertOld,'Update',SUSER_SNAME(),getdate())
end
go
Gruß Tim