Hallo Leute,
ich bastel gerade an einem Trigger der einen Datensatz kopieren soll, neu einfügen und in beiden Datensätzen spalten ändert.
(SQL Server 2008)
Ausgangs Tabelle:
Personal
Name Abteilung seit bis alt
Mitarbeiter 1 x 1.1.2010 1.1.2999 NULL
Wird jetzt ein UPDATE auf die Tabelle durchgeführt, soll geprüft werden was verändert wurde.
Ist es die Abteilung dann Kopiere den Datensatz, setze bis auf aktuelles Datum und alt auf 1
Ist alt bereits 1 oder eine andere Spalte wurde geändert, dann soll nichts passieren
die Neue Tabelle sieht dann wie folgt aus:
Name Abteilung seit bis alt
Mitarbeiter 1 x 1.1.2010 1.1.2011 1
Mitarbeiter 1 y 1.1.2011 1.1.2999 NULL
Mein Problem ist es abzufangen ob die Spalte schon geändert wurde.
Momentan sieht mein Trigger so aus
versuche mich gerade an einem IF ELSE :/
ich bastel gerade an einem Trigger der einen Datensatz kopieren soll, neu einfügen und in beiden Datensätzen spalten ändert.
(SQL Server 2008)
Ausgangs Tabelle:
Personal
Name Abteilung seit bis alt
Mitarbeiter 1 x 1.1.2010 1.1.2999 NULL
Wird jetzt ein UPDATE auf die Tabelle durchgeführt, soll geprüft werden was verändert wurde.
Ist es die Abteilung dann Kopiere den Datensatz, setze bis auf aktuelles Datum und alt auf 1
Ist alt bereits 1 oder eine andere Spalte wurde geändert, dann soll nichts passieren
die Neue Tabelle sieht dann wie folgt aus:
Name Abteilung seit bis alt
Mitarbeiter 1 x 1.1.2010 1.1.2011 1
Mitarbeiter 1 y 1.1.2011 1.1.2999 NULL
Mein Problem ist es abzufangen ob die Spalte schon geändert wurde.
Momentan sieht mein Trigger so aus
SQL:
CREATE TRIGGER SCD
ON [SCD-PERSONAL]
AFTER UPDATE
AS BEGIN
UPDATE [SCD-PERSONAL]
SET Bis = GETDATE(), alt=1
FROM [SCD-PERSONAL] s
INNER JOIN inserted i ON s.personal = i.personal
INNER JOIN deleted d ON s.personal = d.personal
WHERE s.abteilung <> i.abteilung
AND s.abteilung <> d.abteilung
AND s.alt <> 1
INSERT [SCD-PERSONAL] (Personal,Name, Eintritt, Austritt, seit, bis, alt) SELECT Personal,Name, Eintritt, Austritt, GETDATE(), bis, 1 from deleted
END
versuche mich gerade an einem IF ELSE :/