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!

Neuen Kommentar schreiben