Forums Neueste Beiträge
 

Änderungen protokollieren

22/07/2008 - 15:03 von Holger Schröter | Report spam
Möchte die Änderungen (Update) in 3 Tabellen aber nur für bestimmte Spalten
in den Tabellen protokollierieren.
Gespeichert werden soll in einer Tabelle mit Spalten:

Tabellenname
Spaltenname
User
Datensatz-Id
Datum/Zeit
AlterWert
NeuerWert

Kann mir jemand helfen, kleines Beispiel wàre hilfreich, da ich mich mit
Triggern gar nicht beschàftigt habe!

Danke
 

Lesen sie die antworten

#1 Jürgen Volke
22/07/2008 - 15:32 | Warnen spam
Hallo Holger

Möchte die Änderungen (Update) in 3 Tabellen aber nur für bestimmte
Spalten
in den Tabellen protokollierieren.
Gespeichert werden soll in einer Tabelle mit Spalten:

Tabellenname
Spaltenname
User
Datensatz-Id
Datum/Zeit
AlterWert
NeuerWert

Kann mir jemand helfen, kleines Beispiel wàre hilfreich, da ich mich mit
Triggern gar nicht beschàftigt habe!



ca.

CREATE TRIGGER [dbo].[TR_TabNameUPD]

ON [dbo].[tblTabName]

AFTER UPDATE

AS

BEGIN



SET NOCOUNT ON;

DECLARE @User int

SELECT @User = dbo.udfUser()

if update(Feld1) -- numerisches Feld

Begin

INSERT INTO dbo.tblÄnderungsProtokoll

(Tabellenname, Spaltenname, User, DatenSatzId, WertAlt, WertNeu)

SELECT 'tblTabName' as TN , 'Feld1' as SN, current_User as User, I.Id,

cast(isnull(D.Feld1,0) as varchar(20)),

cast(isnull(I.Feld1,0) as varchar(20))

FROM inserted I inner join deleted D ON I.ID = D.ID

WHERE isnull(D.Feld1,0) <> isnull(I.Feld1,0)

End



if update(Feld2) -- alpha-numerisches Feld

Begin

INSERT INTO dbo.tblÄnderungsProtokoll

(Tabellenname, Spaltenname, User, DatenSatzId, WertAlt, WertNeu)

SELECT 'tblTabName' as TN , 'Feld1' as SN, current_User as User, I.Id,

isnull(D.Feld2,''),

isnull(I.Feld2,''))

FROM inserted I inner join deleted D ON I.ID = D.ID

WHERE isnull(D.Feld2,'') <> isnull(I.Feld2,'')

End

End





HTH Jürgen

Ähnliche fragen