Alles Gelingen hat sein Geheimnis, alles Misslingen seine Gründe. - Joachim Kaiser
emde IT-LÖSUNGEN
> Tel. 08131 / 99 69 80-0
> Kontakt per E-Mail
Tabellen mit benutzerspezifischen temporären Daten
30. April 2021
In fast jeder Datenbank-Anwendung braucht man irgendwann Tabellen, in denen während der Durchführung gewisser Funktionen für den jeweiligen Benutzer temporäre Daten gesammelt werden - sei es für eine Auswertung, für eine Filterfunktion, für die Erstellung von Dokumenten o.ä.
Früher haben wir es so gemacht, dass bei jedem Start der Datenbank-Anwendung eine Prozess-ID erstellt wurde - durch Anfügen eines neuen Datensatzes in eine Tabelle "Prozesse" mit einem Zählerfeld. Mit dieser Prozess-ID wurde jeder Datensatz in solchen Tabellen gekennzeichnet, so dass immer klar war, welche Daten zu welchem Prozess gehören. Das erfordert aber, dass man sich beim Anlegen der Daten darum kümmert, dass die Prozess-ID eingetragen wird, und beim Abfragen der Daten immer auf die Prozess-ID prüft.
Alternativ kann man folgendermaßen vorgehen:
- Im SQL-Server wird eine Tabelle "Tabellenname_Tbl" angelegt, die ein Feld "Pro_ID" vom Typ varchar(100) enthält.
- Für diese Tabelle wird folgender Trigger angelegt:
CREATE TRIGGER Tabellenname_Tbl_INS ON Tabellenname_Tbl AFTER INSERT AS BEGIN SET NOCOUNT ON; UPDATE Tabellenname_Tbl SET Pro_ID = SYSTEM_USER FROM Tabellenname_Tbl INNER JOIN inserted ON Tabellenname_Tbl.ID = inserted.ID END
- Zu dieser Tabelle wird nun ein View "Tabellenname" angelegt:
CREATE VIEW Tabellenname AS SELECT * FROM Tabellenname_Tbl WHERE (Pro_ID = SYSTEM_USER)
In der Datenbank-Anwendung kann unter "Tabellenname" nun ein View eingebunden werden, welcher immer genau die Daten zum aktuellen Benutzer enthält. Um alles Weitere kümmert sich der SQL-Server.
Kommentare (0)
Keine Kommentare gefunden!