Trigger schreibt Datensätze, nur der letzte soll gültig sein

MXYPTLK

Benutzer
Beiträge
10
Hallo Forum,

ich versuche eine Schnittstelle zu definieren bei der Kundendaten bei Neuanlage oder Aktualisierung durch einen Trigger in eine separate Tabelle geschrieben werden.
Dazu benutze ich folgenden Trigger:
CREATE TRIGGER TR_Schnittstelle ON dbo.Adressen
FOR INSERT, UPDATE, DELETE
AS
-- Check auf betroffene Datensätze
IF EXISTS ( SELECT 0 FROM Deleted )
BEGIN
-- eingefügte Sätze ?
IF EXISTS ( SELECT 0 FROM Inserted )
BEGIN
INSERT INTO dbo.z_100( ID,[Name] )
SELECT D.Adresse,D.Name1 FROM Deleted D
-- Doubletten anhand der ID vermeiden
WHERE NOT EXISTS
(SELECT ID FROM dbo.z_100 where ID = D.Adresse)
END
ELSE
BEGIN
INSERT INTO dbo.z_100( ID,[Name] )
SELECT Adresse,[Name1] FROM Deleted D
WHERE NOT EXISTS
(SELECT ID FROM dbo.z_sage100 where ID = D.Adresse)
END
END
ELSE
BEGIN
INSERT INTO dbo.z_100 ( ID,[Name] )
SELECT I.Adresse, I.Name1 FROM Inserted I
WHERE NOT EXISTS
(SELECT ID FROM dbo.z_sage100 where ID = i.Adresse)
END
GO

Das Problem hierbei ist, dass der Trigger mehrfach Datensätze schreibt, wenn der User den Kunden (Adresse) mehrfach ändert und abspeichert. Ich möchte aber nur die letzte Änderung aufzeichnen.

WIe kann ich vor dem Schreiben in der Zieltabelle innerhalb des Triggers prüfen, ob der Datensatz bereits existiert? Das eindutige Feld ist die ID.

Vielen Dank für Hilfe zu meiner Denkblockade

Gruß
Heiko
 
Werbung:
In Deinem Beitrag wird nicht so wirklich klar, was triggert und was scripted. Ein Datenbanktrigger braucht natürlich kein PHP. Oder meinst Du ein Shell Script?
Die Fehler kommen sicher durch Sonderzeichen in Pfaden oder Dateinamen, das muss richtig gequoted oder encoded werden. Die Spalte, die die Werte aufnimmt, muss natürlich auch einen geigneten Zeichensatz verwenden, besonders wenn man nicht nur ASCII englische Popsongs archivieren will.
Für den gewünschten Einsatz muss der Insert Trigger eigentlich nur dafür sorgen, dass der alte Wert rausfliegt, theoretisch. Dabei entsteht dennoch irgendwie Datenmüll, wenn Dateien einfach nur verschoben werden. Wichtige Frage ist hier, wie (MP3) Dateien eindeutig identifiziert werden.
Also noch mal über die Mechanik nachdenken.
 
Zurück
Oben