MysterioJN
SQL-Guru
- Beiträge
- 158
Hallo zusammen,
Ziel soll es sein, bei bestimmten Feldern eine Historie / Dokumentation zu führen.
Bzw neuer Denkansatz / Frage:
Kann man bei einer Änderung in egal welcher Spalte nur die Änderung unter Einbeziehung der rowid = PIDX der Änderungstabelle protokolieren als z.B. Variabel mit entsprechender Spaltenbezeichnung?
Mein aktueller Trigger-Versuch sieht wie folgt aus:
Tatsächlich macht er auch was in der HistorienTabelle. Nur WAS versteh ich nicht nicht ganz.
Er macht bei jeder Änderung (egal in welcher Spalte - auch von nicht oben aufgeführten) 26 neue Datenzeilen...
Wie ihr seht, hab ich einen Delete-Trigger versucht umzuwandeln in Update?!
Meine Deletetrigger klappen ganz gut. Aber von Update hab ich keine Ahnung wie man ja hier sieht.
Ziel soll es sein, bei bestimmten Feldern eine Historie / Dokumentation zu führen.
Bzw neuer Denkansatz / Frage:
Kann man bei einer Änderung in egal welcher Spalte nur die Änderung unter Einbeziehung der rowid = PIDX der Änderungstabelle protokolieren als z.B. Variabel mit entsprechender Spaltenbezeichnung?
Mein aktueller Trigger-Versuch sieht wie folgt aus:
Code:
USE [aid_Medien]
GO
/****** Object: Trigger [dbo].[MedStamm_HistorieTrigger] Script Date: 19.03.2018 10:33:43 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[MedStamm_HistorieTrigger] on [dbo].[MedStamm]
AFTER Update
AS DECLARE @VarPIDX INT,
@VarImVertrieb BIT,
@VarImVertriebUser nvarchar(50),
@VarImVertriebAb datetime,
@VarAusVertriebAb datetime,
@VarImVerkauf BIT,
@VarImVerkaufUser nvarchar(50),
@VarImVerkaufAb datetime,
@VarAusVerkaufAb datetime,
@VarMedTraeger_PIDX int,
@VarVeroeffentlicht bit,
@VarVeroeffentlichtUser nvarchar(50),
@VarAuflageIst int
SELECT @VarPIDX = upd.PIDX FROM DELETED upd;
SELECT @VarImVertrieb = upd.ImVertrieb FROM DELETED upd;
SELECT @VarImVertriebUser = upd.ImVertriebUser FROM DELETED upd;
SELECT @VarImVertriebAb = upd.ImVertriebAb FROM DELETED upd;
SELECT @VarAusVertriebAb = upd.AusVertriebAb FROM DELETED upd;
SELECT @VarImVerkauf = upd.ImVerkauf FROM DELETED upd;
SELECT @VarImVerkaufUser = upd.ImVerkaufUser FROM DELETED upd;
SELECT @VarImVerkaufAb = upd.ImVerkaufAb FROM DELETED upd;
SELECT @VarAusVerkaufAb = upd.AusVerkaufAb FROM DELETED upd;
SELECT @VarMedTraeger_PIDX = upd.MedTraeger_PIDX FROM DELETED upd;
SELECT @VarVeroeffentlicht = upd.Veroeffentlicht FROM DELETED upd;
SELECT @VarVeroeffentlichtUser = upd.VeroeffentlichtUser FROM DELETED upd;
SELECT @VarAuflageIst = upd.AuflageIst FROM DELETED upd;
INSERT INTO MedStamm_Historie(
MedStamm_PIDX
,ImVertrieb
,ImVertriebUser
,ImVertriebAb
,AusVertriebAb
,ImVerkauf
,ImVerkaufUser
,ImVerkaufAb
,AusVerkaufAb
,MedTraeger_PIDX
,Veroeffentlicht
,VeroeffentlichtUser
,AuflageIst
,ServerName
,ModDT)
VALUES (@VarPIDX,
@VarImVertrieb,
@VarImVertriebUser,
@VarImVertriebAb,
@VarAusVertriebAb,
@VarImVerkauf,
@VarImVerkaufUser,
@VarImVerkaufAb,
@VarAusVerkaufAb,
@VarMedTraeger_PIDX,
@VarVeroeffentlicht,
@VarVeroeffentlichtUser,
@VarAuflageIst,
CAST( SERVERPROPERTY('ServerName') AS VARCHAR(50)),
GETDATE());
Tatsächlich macht er auch was in der HistorienTabelle. Nur WAS versteh ich nicht nicht ganz.
Er macht bei jeder Änderung (egal in welcher Spalte - auch von nicht oben aufgeführten) 26 neue Datenzeilen...
Wie ihr seht, hab ich einen Delete-Trigger versucht umzuwandeln in Update?!
Meine Deletetrigger klappen ganz gut. Aber von Update hab ich keine Ahnung wie man ja hier sieht.
Zuletzt bearbeitet: